@ Robert: Me han tratado de adaptar su código con una ruta relativa, y ha creado un archivo por lotes para ejecutar el EBV.
La VBS se inicia y se cierra pero no inicia la macro ... ¿Alguna idea de dónde podría estar el problema?
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
He eliminado el "Application.Quit" porque mi macro está llamando a una forma de usuario que se encarga de ello.
Saludos
EDITAR
que realmente han trabajado a cabo, por si acaso alguien quiere ejecutar un formulario de usuario "igual" una aplicación independiente:
Problemas que estaba enfrentando:
1 - No quería utilizar el evento Workbook_Open ya que Excel está bloqueado en solo lectura. 2 - El comando por lotes está limitado por el hecho de que (que yo sepa) no puede llamar a la macro.
escribí por primera vez una macro para lanzar mi UserForm al tiempo que oculta la aplicación:
Sub open_form()
Application.Visible = False
frmAddClient.Show vbModeless
End Sub
Entonces creé un VBS para lanzar esta macro (hacerlo con una ruta relativa ha sido complicado):
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"
Y finalmente hice un archivo por lotes para ejecutar el VBS ...
@echo off
pushd %~dp0
cscript Add_Client.vbs
Tenga en cuenta que También he incluido el "Set de nuevo a visible" en mi 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
De todos modos, gracias por su ayuda, y espero que esto ayudará si alguien lo necesita
¿Está usando vbscript/jscript con Windows scripting host una opción? – madaboutcode