0

ファイルシステムオブジェクトを使用して、クエリ出力をテキストファイルに書き込もうとしています。

これまでの私のコードは次のとおりです。

Sub CreateAfile()

Dim rs As Object

Set rs = CreateObject("ADODB.Recordset")
Dim objFile As Object, TextFile As Object
Set rs = CurrentDb.OpenRecordset("qryOutput")

Set objFile = CreateObject("Scripting.FileSystemObject")
Set TextFile = objFile.CreateTextFile("C:\Users\Documents\Test.txt", True)

rs.MoveFirst
Do Until rs.EOF

TextFile.WriteLine rs.Fields("field1").Value

rs.MoveNext
Loop
rs.Close
TextFile.Close

End Sub

「無効なプロシージャの呼び出しまたは引数」というエラーが発生します。行:TextFile.WriteLine rs.Fields( "field1")。Value

私はここで何かが欠けていますか?

4

1 に答える 1

1

システムにそのフォルダC:\ Users\Documentsがありません。そのため、コードの行にエラー#76「パスが見つかりません」が表示されCreateTextFileます。フォルダーを存在するフォルダーに変更すると、完全なアクセス許可があり、コードをエラーなしで実行できます。でエラーが発生する理由がわかりません TextFile.WriteLine

これらの2つの線は矛盾しているようです。

Set rs = CreateObject("ADODB.Recordset")
Set rs = CurrentDb.OpenRecordset("qryOutput")

CurrentDb.OpenRecordsetADOレコードセットではなくDAOレコードセットを返します。ただし、rsはオブジェクトとして宣言されているため、VBAは、DAOレコードセットを再割り当てする前に、最初にADOレコードセットを割り当てたことを気にしません。これがエラーの原因となるかどうかはわかりませんが、CreateObject("ADODB.Recordset")とにかく行を破棄します。また、rsの宣言を次のように変更します。

Dim rs As DAO.Recordset

(コンパイラがその宣言について文句を言う場合は、参照を設定する必要があります。)

それを除けば、「無効なプロシージャの呼び出しまたは引数」エラーが発生する理由はまだわかりません。

于 2012-02-28T14:15:27.280 に答える