我正在尝试通过.VBS文件(文件名: Check_final.vbs)运行VBA宏。以下是代码
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已锁定为编辑‘,并带有只读和通知选项。如果我使用Read only或notify选项进行确认,则会打开一个名为Check_final (这是该.vbs文件的文件名)的excel工作表,并且上面提到的代码将显示为写入该excel文件中。然后我得到一个Windows脚本主机错误(代码: 800A03AC),告诉我宏可能不可用或所有宏都被禁用。(尽管我已经启用了这里提到的宏。[http://www.addictivetips.com/windows-tips/enable-all-macros-in-excel-2010/)]。这方面的任何帮助都是非常感谢的。提前谢谢。
发布于 2014-04-29 19:07:40
你打开你的vbs文件而不是你的excel文件...还要确保您的函数/sub是公共的。在下面的示例中,我在模块"YourModuleName“中创建了一个Public Sub Check
,我从vbs-file调用它。
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
发布于 2014-04-29 19:28:31
尝试这个简单的代码(未测试)
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
发布于 2014-04-29 17:49:36
我认为调用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
行?
https://stackoverflow.com/questions/23360041
复制相似问题