2012-02-27 72 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 2012-02-27 21:20:30

回答

1

我沒有該文件夾,C:\ Users \ Documents,在我的系統上。所以你的代碼在CreateTextFile行上給我錯誤#76,「找不到路徑」。將文件夾更改爲存在的文件夾以及我擁有完全權限的位置,可以讓代碼無誤地運行。我不明白你爲什麼會在TextFile.WriteLine得到一個錯誤。

這兩條線似乎是矛盾的。

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

CurrentDb.OpenRecordset返回DAO記錄集而不是ADO記錄集。但是,由於rs被聲明爲對象,因此VBA不關心在將DAO記錄集重新分配給它之前,您是否首先爲其分配了ADO記錄集。我不明白這是如何造成你的錯誤,但我會放棄CreateObject("ADODB.Recordset")線。此外,改變聲明RS到:

Dim rs As DAO.Recordset 

(您將需要如果編譯器抱怨該宣言設定參考)

除此之外,我還是不明白你爲什麼」重新獲得「無效的過程調用或參數」錯誤。

+0

Filesystemobject和user793468:http://stackoverflow.com/questions/9468488/寫一個查詢輸出到文本文件使用文件系統對象 http://stackoverflow.com/questions/9470232/invalid-procedure-call-or-agrument http://stackoverflow.com/questions/ 9442215/reading-and-writing-a-csv-file-using-filesystemobject/9442846#9442846 – Fionnuala 2012-02-28 14:35:01

+1

其他兩個問題每個都由一個句子組成。在這一個中,OP向我們展示了代碼,描述了一個錯誤,並確定了觸發它的那一行。我想鼓勵這類問題。所以我嘗試了一個答案。 – HansUp 2012-02-28 16:25:05

相關問題