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

これは非常に奇妙です。このドキュメントForAppendingでは、に対応する定数は であると述べていますが、下部の例では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 に答える