早上好,
我正在尝试使用vbscript运行一个简单的测试宏,并且我收到此错误:“无法运行宏'Test'。宏可能在此工作簿中不可用,或者可能禁用所有宏。 “
以下是vbscript中的文字:
Dim objExcel, xlBook
Set objExcel = CreateObject("Excel.Application")
Set xlBook = objExcel.Workbooks.Open("S:\Water\ProcedureSheet.xlsm")
objExcel.visible = True
objExcel.Run "Test"
xlbook.Save
xlbook.Close
objExcel.Quit
执行此操作时,工作簿正常打开,因此上面指定的路径是正确的。在这个工作簿中,我有一个名为Test的模块,它包含以下宏:
Public Sub Test()
With Sheet3
Cells(1, 1).Value = Time()
End With
End Sub
非常简单,对吧?我已经多次检查了vbscript文本的拼写错误,并且我在Trust Center设置中启用了“信任访问VBA项目对象模型”。我甚至自动启用了所有宏。我不确定这里出了什么问题。这个论坛上的其他人提到需要以管理员身份运行vbscript才能使用它?由于我在工作计算机上,因此我没有此系统的管理员权限,所以我无法尝试。
有没有人有任何想法?谢谢!
答案 0 :(得分:1)
它对我有用,在对您的公共子测试进行一些更改后,您编写的With部分看起来像Pseudocode而不是“正确的代码”。
此外,Time()不是有效函数,它将返回Empty值,您必须使用“Now”函数来获取当前时间和/或日期
'VBScript
Dim objExcel, xlBook
Set objExcel = CreateObject("Excel.Application")
Set xlBook = objExcel.Workbooks.Open("\\DrivePath\Test.xlsm")
objExcel.visible = True
objExcel.Run "Test"
xlbook.Save
xlbook.Close
objExcel.Quit
'Excel Sub
Public Sub Test()
With Sheets("Sheet3")
.Cells(1, 1).Value = Now
End With
End Sub
答案 1 :(得分:0)
我有一个工作正常,但它有一点不同。
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("X:\Temp\Tables.xls", 0, false)
xlapp.visible = true
xlApp.Run "UpdateAll"
xlapp.activeworkbook.close
xlApp.Quit
“0,False”选项不应影响宏是否运行,但谁知道?也许在游戏中有另一个选项,默认方向错误?
答案 2 :(得分:0)
我很感谢这个问题的所有帮助。在弄乱了一分钟之后,我想出了我的错误。在上面的例子中,模块表示"测试"写入的sub也被命名为" Test",这就是错误的原因。
只需更改名称并修复上面提到的正确识别的伪代码,脚本就可以了。我将模块名称更改回"测试"确认我的怀疑,确实是导致该错误被抛出的模块名称。