У меня есть необходимость открыть некоторые файлы Excel и «приостановить», а затем закрыть их.В этом процессе я запускаю один макрос при открытии, а другой при закрытии.Открытие работает нормально, потому что это делается при открытии каждого файла.Но заключительная часть кода, я не могу заставить его запустить правильный макрос.У них одинаковые имена, но конкурсы файлов разные, и то, что макрос делает для файла, отличается.
Это суть того, что я делаю сейчас
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
path = "\\Gaalpa1cdfile19\north_sa_staff\Reports\Rpt-ProductionCurves\"
filename2018P1 = "2018 P1.xlsm"
Set xlbook2018P1 = xlApp.WorkBooks.Open(path & filename2018P1)
' Run Macro
xlApp.Run "AutoRefresh"
filename2018P3 = "P3 2018 HRR.xlsm"
Set xlbook2018P3 = xlApp.WorkBooks.Open(path & filename2018P3)
'Run Macro
xlApp.Run "AutoRefresh"
'My "pause"
WScript.Echo ("All Files were" & Chr(013) & _
"opened and refreshed, update ppt before OK" & Chr(013) & _
" DO NOT CLICK OK" & Chr(013))
'==========================
'Below is the trouble spot.
'==========================
xlapp.Run "'" & filename2018P1 & "'" & "!AutoPublish"
xlbook2018P1.Close False
Set xlbook2018P1 = Nothing
xlapp.run "'" & filename2018P3 & "'" & "!AutoPublish"
xlbook2018P3.Close False
Set xlbook2018P3 = Nothing
Первая часть работает нормально, но попытка запустить соответствующий макрос AutoPublish
не дает.Код работает нормально, если я пропущу эту строку Run
.(В настоящих именах файлов есть пробелы, и мне пришлось добавить одинарные кавычки, чтобы заставить его принять имя файла.)
Похоже, что он использует макросы из последнего открытого файла, а не тот, который онНаправлено использовать это бегущей строкой.Я думаю, что мне нужен способ «выбрать» правильный файл или выделить его, чтобы макрос мог работать без явного аргумента имени файла, который он все равно игнорирует.
РЕДАКТИРОВАТЬ:
Решение было:
xlbook2018P1.Activate ' This fixed it, I think
xlapp.Run "'" & filename2018P1 & "'" & "!AutoPublish"
xlbook2018P1.Close False
Set xlbook2018P1 = Nothing
xlbook2018P3.Activate
xlapp.run "'" & filename2018P3 & "'" & "!AutoPublish"
xlbook2018P3.Close False
Set xlbook2018P3 = Nothing