2012-02-27 70 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

相关问题