У меня есть код для работы в Excel VBA.
Dim con, com
Const adCmdStoredProc = 4
Const scon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Accessdbpath.accdb;Persist Security Info=False;"
Set con = CreateObject("adodb.connection")
Set com = CreateObject("adodb.command")
con.Open scon
Set com.activeconnection = con
com.CommandType = adCmdStoredProc
com.CommandText = "accessqueryname"
com.Execute
Set com.activeconnection = Nothing
Set con = Nothing
Я пытался запустить ту же процедуру на сервере (без офиса MS) .
Поэтому я попытался создать файл VBS, чтобы сделать это вместо Excel VBA.
.
Однако я не могу заставить его работать. Я получил ошибку ниже:
Edit1: Я проверял с помощью проводника процессов, запускаю ли я скрипт на 64- или 32-разрядной версии, а на 64-разрядной.
Провайдер вообще установлен? Если нет, проверьте эта ветка.
@AnsgarWiechers Конечно, это работает в Excel VBA. Используют ли VBS и VBA разных провайдеров, учитывая, что я использовал одну и ту же строку подключения, которая должна указывать на один и тот же драйвер. Кстати, в настоящее время я тестирую это на той же машине, где я тестирую файл Excel с тем же кодом.
Если провайдер установлен правильно, обычная причина наблюдаемой ошибки заключается в том, что сценарий был запущен с 64-битным интерпретатором, а не с 32-битным интерпретатором. Если вы действительно запускали сценарий с 32-разрядным интерпретатором (дважды проверьте с помощью Process Explorer), вам необходимо предоставить дополнительную информацию.
@AnsgarWiechers Я пробовал то, что Найлз указал в своем посте, но то же самое. Вы это имели в виду? Или мне нужно проверить где-нибудь еще, например обозреватель процессов, о котором вы говорите? Я не думаю, что у меня это установлено.
Да, именно так вы обычно запускаете 32-битный интерпретатор. В Process Explorer вы можете добавить столбец, показывающий, является ли процесс 32-битным или 64-битным. Используйте это, чтобы убедиться, что запущенный экземпляр интерпретатора VBScript на самом деле 32-битный. Process Explorer не требует установки. Просто скачайте zip-архив, распакуйте его и запустите оттуда исполняемый файл.
@AnsgarWiechers См. Мою редакцию. Кстати, спасибо, что указали, что его не нужно устанавливать.
Попробуйте запустить C:\Windows\SysWOW64\cmd.exe
(этот экземпляр CMD должен быть 32-битным в Process Explorer) и запустить оттуда свой VBScript с 32-битным C:\Windows\SysWOW64\cscript.exe
. Но даже при запуске из 64-битного CMD C:\Windows\SysWOW64\cscript.exe
и C:\Windows\SysWOW64\wscript.exe
должны запускаться как 32-битные процессы, а не как 64-битные, как на вашем скриншоте.
@AnsgarWiechers В опубликованной ветке нет принятого ответа, и главный ответ не работает для меня.