Текст перезаписывается, когда он должен быть добавлен
Это кажется очень простым (я делал это миллион раз и у меня никогда не было проблем), но это меня убивает.
Я хочу создать несколько сценариев SQL на основе содержимого электронной таблицы Excel. Для этого я создал макрос, который читает текстовый файл, используя код ниже
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim stream As TextStream
Set stream = fso.OpenTextFile(filepath, 8, False)
Это должно открыть текстовый файл для добавления и подключить мои новые значения.
К сожалению, он всегда перезаписывается, а не добавляется, и это сводит меня с ума.
Есть идеи?
3 ответа
Я только недавно построил функцию добавления строк в файл. Я столкнулся с этой проблемой всего несколько недель / месяцев назад и обнаружил, что, если использовать собственно слово ForAppending, как оно отображается в Intellisense, вместо числа 8, которое он работал для меня.
Const ForAppending = 8
Sub AppendStringToFile(ByVal strFile As String, ByVal strNewText As String, Optional intBlankLine As Integer = 1)
Dim fso as FileSystemObject, ts as TextStream
Set fso = New FileSystemObject
Set ts = fso.OpenTextFile(strFile, ForAppending, True)
With ts
.WriteBlankLines intBlankLine
.WriteLine (strNewText)
.Close
End With
Set ts = Nothing
Set fso = Nothing
End Sub
Вернитесь к основам....Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]
используется для ваших требований:
Dim FNum As Integer
FNum = FreeFile()
Open strFile For Append As FNum
'do your stuff here
Write #FNum, MyData
Close FNum
Это очень странно, в этой документации упоминается, что константа, соответствующая ForAppending
является 8
, но он использует 3
в примере внизу.
Пытаться:
Dim fso As FileSystemObject
Set fso = New FileSystemObject
Dim stream As TextStream
Set stream = fso.OpenTextFile(filepath, 3, False)