Внешний макрос Excel с VBS не работает - PullRequest
0 голосов
/ 18 февраля 2019

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

Я использую следующий код VBS для запуска макроса, но по какой-то причине он работает не так, как ожидалось.В проводнике я вижу, что файл excel открывается (к новой дате изменения), но внутри таблиц нет никаких изменений.

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")

' Create an Excel instance
Dim myExcelWorker
Set myExcelWorker = CreateObject("Excel.Application") 

' Disable Excel UI elements
myExcelWorker.DisplayAlerts = False
myExcelWorker.AskToUpdateLinks = False
myExcelWorker.AlertBeforeOverwriting = False
myExcelWorker.FeatureInstall = msoFeatureInstallNone

' Tell Excel what the current working directory is 
' (otherwise it can't find the files)
Dim strSaveDefaultPath
Dim strPath
strSaveDefaultPath = myExcelWorker.DefaultFilePath
strPath = WshShell.CurrentDirectory
myExcelWorker.DefaultFilePath = strPath

' Open the Workbook specified on the command-line 
Dim oWorkBook
Dim strWorkerWB
strWorkerWB = strPath & "\WatchlistMentoring.xlsm"

Set oWorkBook = myExcelWorker.Workbooks.Open(strWorkerWB)

' Build the macro name with the full path to the workbook
Dim strMacroName
strMacroName = "'" & strPath & "\WatchlistMentoring.xlsm!UpdateAllspreads()"
on error resume next 
   ' Run the calculation macro
   myExcelWorker.Run strMacroName
   if err.number <> 0 Then
      ' Error occurred - just close it down.
   End If
   err.clear
on error goto 0 

oWorkBook.Save 

myExcelWorker.DefaultFilePath = strSaveDefaultPath

' Clean up and shut down
Set oWorkBook = Nothing

' Don’t Quit() Excel if there are other Excel instances 
' running, Quit() will shut those down also
if myExcelWorker.Workbooks.Count > 0 Then
    myExcelWorker.Quit
    End If

    Set myExcelWorker = Nothing
    Set WshShell = Nothing

Очевидно, что имя файла и имя макроса являются правильными сами по себе., но не уверен, что я использую их правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...