@Robert:我试图用相对路径调整你的代码,并创建一个批处理文件来运行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”,因为我的宏正在调用userform来处理它 .
干杯
EDIT
我实际上已经解决了这个问题,以防万一有人想要运行一个“相似”的用户表单:一个独立的应用程序:
我面临的问题:
1 - 我不想使用Workbook_Open事件,因为excel被锁定为只读 . 2 - 批处理命令受限于(据我所知)它无法调用宏的事实 .
我首先写了一个宏来启动我的userform同时隐藏应用程序:
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 中包含了"Set back to visible":
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
无论如何,感谢您的帮助,我希望如果有人需要,这将有所帮助