运行宏与vbscript - 共享驱动器上的工作簿

时间:2018-04-27 14:41:07

标签: excel-vba vbscript vba excel

早上好,

我正在尝试使用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才能使用它?由于我在工作计算机上,因此我没有此系统的管理员权限,所以我无法尝试。

有没有人有任何想法?谢谢!

3 个答案:

答案 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",这就是错误的原因。

只需更改名称并修复上面提到的正确识别的伪代码,脚本就可以了。我将模块名称更改回"测试"确认我的怀疑,确实是导致该错误被抛出的模块名称。