Текст перезаписывается, когда он должен быть добавлен

Это кажется очень простым (я делал это миллион раз и у меня никогда не было проблем), но это меня убивает.

Я хочу создать несколько сценариев 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)
Другие вопросы по тегам