2012-02-27 12 views
0

ファイルシステムオブジェクトを使用してクエリ出力をテキストファイルに書き込もうとしています。ラインで "無効なプロシージャ呼び出しまたは引数" :私はエラーを取得するVBA無効なプロシージャ呼び出しまたは引数にアクセスする

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( "フィールド1")の値

ここに何か不足していますか?

+0

http://stackoverflow.com/questions/9468488/writing-a-query-output-to-text-file-using-filesystemobject – Fionnuala

答えて

1

私のシステムには、そのフォルダであるC:\ Users \ Documentsがありません。だからあなたのコードは、エラー#76、 "パスが見つかりません"、CreateTextFile行に表示されます。フォルダを存在するフォルダに変更すると、完全なアクセス許可が与えられているので、コードをエラーなく実行できます。 TextFile.WriteLineにエラーが表示される理由を理解できません。

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

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

CurrentDb.OpenRecordsetは、ADOレコードセットではなくDAOレコードセットを返します。しかし、rsはオブジェクトとして宣言されているため、VBAはDAOレコードセットを再割り当てする前にADOレコードセットを最初に割り当てても構いません。私はこれがあなたのエラーにどのように寄与するかわかりませんが、とにかくCreateObject("ADODB.Recordset")行を破棄します。また、にRSの宣言を変更します。それはさておき(。コンパイラはその宣言について不平を言う場合は、参照を設定する必要があります)

Dim rs As DAO.Recordset 

を、私はまだ「なぜあなたを理解していません「無効なプロシージャ・コールまたは引数」エラーが戻されます。

+0

Filesystemオブジェクトとユーザー793468:http://stackoverflow.com/questions/9468488/を参照してください。 text-file-using-filesystemオブジェクトを出力するクエリ出力の作成 http://stackoverflow.com/questions/9470232/invalid-procedure-call-or-agrument http://stackoverflow.com/questions/ 9442215/csv-file-using-filesystemobject/9442846#9442846 – Fionnuala

+1

その他の2つの質問はそれぞれ1つの文で構成されています。この中でOPは私たちにコードを示し、エラーを説明し、それを引き起こした行を特定しました。私はこの種の質問を奨励したい。だから私は答えを試みた。 – HansUp

関連する問題