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.

这两条线似乎是矛盾的。

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

CurrentDb.OpenRecordset返回 DAO 记录集而不是 ADO 记录集。但是,由于 rs 被声明为对象,因此 VBA 并不关心您是否先为其分配了 ADO 记录集,然后再将 DAO 记录集重新分配给它。我看不出这对您的错误有何影响,但CreateObject("ADODB.Recordset")无论如何我都会丢弃该行。此外,将 rs 的声明更改为:

Dim rs As DAO.Recordset

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

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

于 2012-02-28T14:15:27.280 回答