Запуск макроса с vbscript - рабочая книга на общем диске - PullRequest
0 голосов
/ 27 апреля 2018

Доброе утро,

Я пытаюсь запустить простой тестовый макрос, используя vbscript, и получаю следующее сообщение об ошибке: «Невозможно запустить макрос« Тест ». Макрос может быть недоступен в этой книге или все макросы могут быть отключены». «

Вот текст в VBScript:

Dim objExcel, xlBook

Set objExcel = CreateObject("Excel.Application")
Set xlBook = objExcel.Workbooks.Open("S:\Water\ProcedureSheet.xlsm")

objExcel.visible = True
objExcel.Run "Test"

xlbook.Save
xlbook.Close
objExcel.Quit

При выполнении этого книга открывается очень хорошо, поэтому указанный выше путь верен. В этой книге у меня есть модуль с именем Test, который содержит следующий макрос:

Public Sub Test()

    With Sheet3
        Cells(1, 1).Value = Time()
    End With

End Sub

Довольно просто, верно? Я много раз проверял текст vbscript на наличие орфографических ошибок и включил «Доверительный доступ к объектной модели проекта VBA» в настройках Центра управления безопасностью. Я даже автоматически включил все макросы. Я не уверен, что здесь происходит не так. Кто-то еще на этом форуме упомянул необходимость запуска vbscript от имени администратора, чтобы он работал? Поскольку я работаю на компьютере, у меня нет прав администратора в этой системе, поэтому я не могу попробовать.

У кого-нибудь есть идеи? Спасибо!

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Это работает для меня, после нескольких изменений в вашем публичном суб-тесте написанная вами часть With выглядит как псевдокод, а не "правильный код".

Кроме того, Time () не является допустимой функцией, она возвращает пустое значение, вы должны использовать функцию «Сейчас», чтобы получить текущее время и / или дату

'VBScript
Dim objExcel, xlBook

Set objExcel = CreateObject("Excel.Application")
Set xlBook = objExcel.Workbooks.Open("\\DrivePath\Test.xlsm")

objExcel.visible = True
objExcel.Run "Test"

xlbook.Save
xlbook.Close
objExcel.Quit

'Excel Sub
Public Sub Test()
    With Sheets("Sheet3")
        .Cells(1, 1).Value = Now
    End With
End Sub
0 голосов
/ 27 апреля 2018

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

Просто изменили имя и исправили правильно идентифицированный псевдокод, указанный выше, и скрипт работал просто отлично. Я изменил имя модуля обратно на «Тест», чтобы подтвердить свои подозрения, и это действительно было имя модуля, которое вызвало эту ошибку.

0 голосов
/ 27 апреля 2018

У меня есть один, который отлично работает, но имеет небольшую разницу.

 Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("X:\Temp\Tables.xls", 0, false) 
  xlapp.visible = true
  xlApp.Run "UpdateAll"
  xlapp.activeworkbook.close
  xlApp.Quit 

Параметры «0, False» не должны влиять на запуск макроса или нет, но кто знает? может быть, в игре есть еще один вариант, который по умолчанию идет в неправильном направлении?

...