访问VBA无效的过程调用或参数

时间:2012-02-27 18:29:36

标签: ms-access-2007 access-vba filesystemobject

我正在尝试使用文件系统对象将查询输出写入文本文件。

到目前为止,这是我的代码:

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”)。值

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我的系统上没有该文件夹 C:\ Users \ Documents 。因此,您的代码在CreateTextFile行上给出了错误#76,“未找到路径”。将文件夹更改为存在的文件夹,以及我拥有完全权限的文件夹,允许代码无错误地运行。我不明白为什么你在TextFile.WriteLine收到错误。

这两条线似乎相互矛盾。

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

CurrentDb.OpenRecordset返回DAO记录集而不是ADO记录集。但是,由于rs被声明为对象,因此在重新为其分配DAO记录集之前,VBA并不关心您是否首先为其分配了ADO记录集。我不知道这会如何导致你的错误,但无论如何我都会放弃CreateObject("ADODB.Recordset")行。另外,将rs的声明更改为:

Dim rs As DAO.Recordset

(如果编译器抱怨该声明,则需要设置引用。)

除此之外,我仍然不明白你为什么会收到“无效的程序调用或参数”错误。