@ Роберт: Я намагався адаптувати ваш код із відносним шляхом і створив пакетний файл для запуску 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", оскільки мій макрос викликає форму користувача, яка про це дбає.
Ура
РЕДАГУВАТИ
Я насправді це розробив, на випадок, якщо хтось захоче запустити користувальницьку форму "однаково" самостійну програму:
Проблеми, з якими я стикався:
1 - Я не хотів використовувати Workbook_Open Event, оскільки 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
Зверніть увагу, що я також включив "Встановити назад до видимого" у своєму 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
У будь-якому випадку, дякую за вашу допомогу, і я сподіваюся, це допоможе, якщо комусь це буде потрібно