Member 13485326 Ответов: 1

Как найти ошибку sytax в строке 13 символ 35 в приведенном ниже коде


'''' Define the file full name.
strDBFullName = "C:\Users\Charles\Documents\Weather\Weather.accdb"

'''' Check whether the file exists.
If Not CreateObject("Scripting.FileSystemObject").FileExists(strDBFullName) Then
  MsgBox "File """ & strDBFullName & """ does not exist or is not available.", vbCritical, "File Not Found"
  WScript.Quit
End If

'''' Create a new Access-instance, display it and open the file.
Set oAC = CreateObject("Access.Application")
oAC.Visible = True
Set oDB = oAC.OpenCurrentDataBase strDBFullName

'	oDB.Run "Update"

'''' Opens and Runs The Auto open Macro

'''' Save the workbook and clean up.
oDB.Save
oDB.Close
oAC.Quit
Set oAC = Nothing


Что я уже пробовал:

Я попытался полностью перепечатать строку кода и ввести путь и имя файла в кавычках и скобках. Вся онлайновая информация, которую я нашел, кажется, предполагает, что этот код действителен

1 Ответов

Рейтинг:
1

Richard Deeming

Строка 13, символ 35-это:

Set oDB = oAC.OpenCurrentDataBase strDBFullName
----------------------------------^

Вам почти наверняка нужно заключить этот параметр в круглые скобки:
Set oDB = oAC.OpenCurrentDataBase(strDBFullName)


Member 13485326

Если я это сделаю, то он действительно загрузит базу данных, но получит еще одну строку ошибки 13 Chr 1, требуется объект; 'oAC.opencurrentdatabase(...)'

Dave Kreskowiak

Удалите часть "Set oDB =". Функция "OpenCurrentDatabase" ничего не возвращает.

Member 13485326

Спасибо, что решили проблему на линии 13. Однако теперь я получаю ошибку для строки 20, chr 1, object required: oDB

Richard Deeming

Потому что это не то, как работает объектная модель доступа. OpenCurrentDatabase не возвращает объект, так что oDB не устанавливается на объект.

Вам нужно проверить, как работает Access, и исправить свой сценарий:
Открыть справочник по VBA [^]

Member 13485326

Я думаю, что теперь у меня есть сценарий, работающий (он работает вручную нормально), поэтому я настрою расписание, чтобы запустить его сегодня вечером и проверить результат завтра. Код показан ниже:

"" Определите полное имя файла.
strDBFullName = "C:\Users\Charles\Documents\Weather\Weather.accdb"

"Проверьте, существует ли файл.
Если Нет CreateObject("Scripting.FileSystemObject").Затем FileExists(strDBFullName)
Функцию MsgBox "файл """ &амп; strDBFullName &ампер; """ не существует или не доступен"., vbCritical, "файл не найден"
Объект WScript.Бросить
Конец, Если

"" Создайте новый экземпляр Access-instance, отобразите его и откройте файл.
Set oAC = CreateObject("доступ.Приложение")
ОАЦ.Видимое = Истинное
oDB = oAC.OpenCurrentDataBase(strDBFullName)
ОАЦ.Элемент Управления UserControl = Истина

"" Открывает и запускает макрос обновления
oDB = oAC.DoCmd.RunMacro("обновление", , "")


"Сохраните книгу и очистите ее.

CloseDB = oAC.CloseCurrentDatabase
CloseAP = oAC.Приложение.Выйти
Установить oAC = ничего

Member 13485326

Скрипт отлично работает, когда я запускаю его вручную, но время ожидания истекает при вызове планировщиком задач.

Я инициирую новый вопрос, чтобы охватить этот и другой вопрос планировщика