如果log文件没有内容,从00001开始写
如果有按顺序继续往下泄,一直到99999
然后保存为log.dat.bak再有新的纪录就新建log.dat

解决方案 »

  1.   

    Dim i As Long
        
        i = 1
        Open "c:\log.dat.bak" For Output As #1
        For i = 1 To 99999
            Print #1, Format(i, "00000")
        Next
        Close #1
      

  2.   

    我需要用FileSystemObject对象的方法
      

  3.   

    '引用microsoft script runtime
    Private Sub Command1_Click()    Dim fsoTest As New FileSystemObject, file1 As File, ts As TextStream
        Set file1 = fsoTest.GetFile("c:\a.txt")
        Set ts = file1.OpenAsTextStream(ForWriting)
        '使用Write方法写入
        For I = 1 To 99999
            ts.Write (I & vbCrLf)
        Next
        ts.Close
    End Sub
      

  4.   

    forwriting 不能读的
    是不是要用for appending
    关键是怎么实现取出上一次的纪录是多少,然后再追加一条纪录,按顺序。
      

  5.   


    OpenAsTextStream (ForReading)
    读取出上一次的纪录
    ----------------
    OpenAsTextStream (ForAppending)这样追加
      

  6.   

    打开文件,将指针定位到最后一行有效记录
    用split取出记录号,转化为数值在加一然后在加上消息写入,文件
    如果此时记录号已经到了99999最好就进行改名工作不要等下次还要判断
      

  7.   

    ublic Sub WriteLog(Optional SaveType As SType)
    If Err.Number <> 0 Then
        Select Case SaveType
            Case 0
                 App.StartLogging App.Path & "\" & App.Title & ".log", vbLogToFile
                 'App.LogEvent "Time:  " & VBA.Now() & "  ID:  " & VBA.CStr(Err.Number) & "  Source:  " & Err.Source & "  Description:  " & Err.Description, vbLogEventTypeError
            Case 1
                 App.StartLogging "", vbLogToNT
                 'App.LogEvent "ID: " & VBA.CStr(Err.Number) & " Source: " & Err.Source & " Description: " & Err.Description, vbLogEventTypeError
            Case 2
                 Err.Clear
                 Exit Sub
            Case Else
                 'App.LogEvent "ID: " & VBA.CStr(Err.Number) & " Source: " & Err.Source & " Description: " & Err.Description, vbLogEventTypeError
        End Select
        App.LogEvent "Time:  " & VBA.Now() & "  ID:  " & VBA.CStr(Err.Number) & "  Source:  " & Err.Source & "  Description:  " & Err.Description, vbLogEventTypeError
        Err.Clear
    End If
    End Sub
      

  8.   

    Public Sub WriteLogNew(strTitle As String, strMessage As String, logshain As SHAIN)
    Dim objFSO                      As Scripting.FileSystemObject
    Dim objFilestream               As Object
    Dim update_time                 As String
    Dim strFileName                 As String
    Dim strWriteline                As String
    Dim iCntSpace_kanji             As Integer
    Dim iCntSpace_kana              As Integer
    Dim logIndex                    As String
    Dim strTemp                     As String
    Dim lngMax                      As Double
    update_time = Format(Now, "yyyymmddhhmmss")strFileName = App.Path & "\" & LOG
    Set objFSO = New Scripting.FileSystemObject
    Set objFilestream = objFSO.OpenTextFile(strFileName, ForReading)
    logIndex = "0"
    Do While Not (objFilestream.AtEndOfStream)
        logIndex = Left(objFilestream.ReadLine, 5)
    Loop
        If logIndex = "99999" Then         'レコードNOはMAX99999まで到達した場合&#65380;バックアップファイルにコピーし&#65380;ログファイルは初期化する&#65377;
            objFilestream.Close
            objFSO.DeleteFile strFileName
            Set objFilestream = objFSO.OpenTextFile(strFileName, ForAppending, True)
            logIndex = Format(1, "00000")
        ElseIf logIndex = "0" Then
            logIndex = Format(1, "00000")
        Else
            logIndex = Format(Val(logIndex + 1), "00000")
        End If
        
        objFilestream.Close    Call SetNothing(objFilestream)
         
    strWriteline = ""
    strWriteline = strWriteline & logIndex
    strWriteline = strWriteline & logshain.strShain_id
    strWriteline = strWriteline & strTitle
    strWriteline = strWriteline & "_"
    strWriteline = strWriteline & strMessage
    strWriteline = strWriteline & logshain.strName_kanaji
    strWriteline = strWriteline & Space(iCntSpace_kanji)
    strWriteline = strWriteline & logshain.strName_kana
    strWriteline = strWriteline & Space(iCntSpace_kana)
    strWriteline = strWriteline & logshain.strSex
    strWriteline = strWriteline & logshain.strBusho
    strWriteline = strWriteline & logshain.strKengen
    strWriteline = strWriteline & logshain.strNaisen_no
    strWriteline = strWriteline & logshain.strYakusyoku
    strWriteline = strWriteline & Space(150 - LenB(StrConv(strWriteline, vbFromUnicode)))
    strWriteline = strWriteline & update_time
        
        strFileName = App.Path & "\" & LOG
        Set objFSO = New Scripting.FileSystemObject
        Set objFilestream = objFSO.OpenTextFile(strFileName, ForAppending, True)
        
        objFilestream.WriteLine (strWriteline)
                End Sub