2

这看起来真的很容易(我已经做了一百万次并且从来没有遇到过问题),但这让我很生气。

我想根据 Excel 电子表格中的内容创建一些 SQL 脚本。为此,我创建了一个使用以下代码读取文本文件的宏

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim stream As TextStream
Set stream = fso.OpenTextFile(filepath, 8, False)

应该打开文本文件以附加并插入我的新值。

不幸的是,它总是覆盖而不是附加,这让我发疯了。

有任何想法吗?

4

3 回答 3

10

我最近刚刚构建了一个将字符串附加到文件的函数。几周/几个月前,我遇到了这个问题,发现如果使用实际单词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
于 2012-06-20T19:20:30.430 回答
7

回归基础......
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
于 2012-06-21T02:38:38.037 回答
-3

很奇怪,在这个文档中,它提到了对应的常量ForAppendingis 8,但它3在底部的示例中使用。

尝试:

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim stream As TextStream
Set stream = fso.OpenTextFile(filepath, 3, False)
于 2012-06-20T19:19:11.190 回答