我正在尝试使用文件系统对象将查询输出写入文本文件。
到目前为止,这是我的代码:
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”)。值
我在这里错过了什么吗?
答案 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
(如果编译器抱怨该声明,则需要设置引用。)
除此之外,我仍然不明白你为什么会收到“无效的程序调用或参数”错误。