我试图通过.VBS文件运行VBA宏(文件名:Check_final.vbs)。这是代码
Option Explicit
run_macro
Sub run_macro()
Dim xl1
Dim sCurPath
Dim xlBook
Dim FolderFromPath
Set xl1 = CreateObject("Excel.application")
sCurPath =Wscript.ScriptFullName
Set xlBook = xl1.Workbooks.Open(sCurPath, 0, True)
xl1.DisplayAlerts = False
FolderFromPath = Left(sCurPath, InStrRev(sCurPath, "\"))
xl1.Application.run FolderFromPath & "Changed_chk.xlsm!Check"
Set xlBook = Nothing
End Sub
当我运行此.vbs文件时,我收到此弹出窗口' Changed_chk.xlsm已被锁定以进行编辑'使用只读和通知选项。如果我使用只读或通知选项确认它,则以Check_final的名称(该.vbs文件的文件名)打开Excel工作表,并且上述代码显示在该excel文件中。然后我得到一个Windows脚本主机错误(代码:800A03AC),说宏可能不可用或所有宏都被禁用。(虽然我已经启用了这里提到的宏。[http://www.addictivetips.com/windows-tips/enable-all-macros-in-excel-2010/)]。 对此有任何帮助非常感谢。提前谢谢。
答案 0 :(得分:2)
您打开vbs文件而不是excel文件...还要确保您的function / sub是公共的。在下面的示例中,我在模块" YourModuleName"中创建了一个Public Sub Check
,我从vbs文件中调用它。
Option Explicit
run_macro
Sub run_macro()
Dim xl1
Dim xlBook
Dim FolderFromPath
Set xl1 = CreateObject("Excel.application")
FolderFromPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "")
set xlBook = xl1.Workbooks.Open(FolderFromPath & "Changed_chk.xlsm")
xl1.Application.run "'" & xlBook.Name & "'!YourModuleName.Check"
xl1.Application.Quit
End Sub
答案 1 :(得分:1)
试试这个简单的代码(UNTESTED)
Dim oXlApp, oXLWb, sCurPath
Set oXlApp = CreateObject("Excel.application")
sCurPath = Replace(WScript.ScriptFullName, WScript.ScriptName, "")
Set oXLWb = oXlApp.Workbooks.Open(sCurPath & "Changed_chk.xlsm")
oXlApp.DisplayAlerts = False
oXlApp.Run "Check"
'~~> Close the file here. Save or discard the changes as per your requirement
'oXLWb.Close (True)
'oXLWb.Close (False)
oXLWb.Close
oXlApp.Quit
Set oXLWb = Nothing
Set oXlApp = Nothing
你的宏在哪里?在一张纸或一个模块中?您可能希望看到THIS
答案 2 :(得分:0)
我认为调用run_macro
语句可能有问题。从我在excel VBA中创建的测试中,如果我尝试在另一个子
Option Explicit
test
Sub test()
MsgBox ("Test")
End Sub
我想你可能想要
Option Explicit
Sub Start
run_macro
End Sub
Sub run_macro()
'code here
End Sub
或完全删除run_macro
行?