Доступ к недействительному вызову или аргументу процедуры VBA - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь записать вывод запроса в текстовый файл, используя объект файловой системы.

Вот мой код:

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 Ответ

1 голос
/ 28 февраля 2012

У меня нет этой папки, 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

(Вам нужно будет установить ссылку, если компилятор жалуется на это объявление.)

Кроме того, я до сих пор не понимаю, почему вы получаете ошибку «Недопустимый вызов процедуры или аргумент».

...