@ Роберт: Я попытался адаптировать ваш код с относительным путем и создал командный файл для запуска VBS.
VBS запускается и закрывается, но не запускает макрос ... Есть идеи, где может быть проблема?
Option Explicit
On Error Resume Next
ExcelMacroExample
Sub ExcelMacroExample()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFilePath = objFSO.GetAbsolutePathName(".")
Set xlBook = xlApp.Workbooks.Open(strFilePath, "Excels\CLIENTES.xlsb") , 0, True)
xlApp.Run "open_form"
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Я удалил «Application.Quit», потому что мой макрос вызывает пользовательскую форму, которая позаботилась об этом.
Приветствия
EDIT
Я на самом деле разработал это, на тот случай, если кто-то захочет запустить пользовательскую форму, «похожую» на отдельное приложение:
Проблемы, с которыми я столкнулся:
1 - я не хотел использовать событие Workbook_Open, так как Excel заблокирован только для чтения.
2 - Пакетная команда ограничена тем фактом, что (насколько мне известно) она не может вызвать макрос.
Сначала я написал макрос для запуска пользовательской формы, скрывая приложение:
Sub open_form()
Application.Visible = False
frmAddClient.Show vbModeless
End Sub
Затем я создал VBS для запуска этого макроса (сделать это с относительным путем было сложно):
dim fso
dim curDir
dim WinScriptHost
set fso = CreateObject("Scripting.FileSystemObject")
curDir = fso.GetAbsolutePathName(".")
set fso = nothing
Set xlObj = CreateObject("Excel.application")
xlObj.Workbooks.Open curDir & "\Excels\CLIENTES.xlsb"
xlObj.Run "open_form"
И, наконец, я создал командный файл для выполнения VBS ...
@echo off
pushd %~dp0
cscript Add_Client.vbs
Обратите внимание, что я также включил "Set back to visible" в мой Userform_QueryClose
:
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ThisWorkbook.Close SaveChanges:=True
Application.Visible = True
Application.Quit
End Sub
В любом случае, спасибо за вашу помощь, и я надеюсь, что это поможет, если кому-то понадобится