我有这个:
On Error GoTo ErrorHappened
Const ForAppending = 8
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile(ThisWorkbook.path & Application.PathSeparator & "Log.txt", ForAppending, True)
oFile.WriteLine eLogMessage
oFile.Close
Set fso = Nothing
Set oFile = Nothing
追加不起作用。有谁知道为什么这总是覆盖原始文件中的什么?
答案 0 :(得分:1)
您的代码每次运行时都会创建一个新文件。那是因为你正在使用“.CreateTextFile”。 Hense,不附加当前存在的文件。因此,我们需要检查文件是否存在。如果它不存在,我们将创建一个新文件。如果它已经存在,我们将附加现有文件。
此示例假定“C:”驱动器根目录中的文件夹名为“test”。以下代码有效,可以根据您的需要进行修改。第一次运行代码时,它会创建一个新文件并写入它。创建文件后,它将附加现有文件。
Sub WriteSample()
Dim fso As Object
Dim f As Object
Const ForAppending = 8
Const TristateFalse = 0
Set fso = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists("C:\test\testfile.txt")) Then
Set f = fso.CreateTextFile("C:\test\testfile.txt", ForAppending, TristateFalse)
f.Write "Hello World!" & vbCrLf
f.Close
Else
Set f = fso.OpenTextFile("c:\test\testfile.txt", ForAppending, TristateFalse)
f.Write "Hello World Again!" & vbCrLf
f.Close
End If
Set fso = Nothing
Set oFile = Nothing
End Sub
答案 1 :(得分:0)
您可以使用CreateTextFile(..., ForAppending, True)
代替OpenTextFile(..., ForAppending, True)
,其中True
的意思是“如果不存在则创建”。参见opentextfile-method。