首页 > 解决方案 > 使用 vbscript 运行宏 - 共享驱动器上的工作簿

问题描述

早上好,

我正在尝试使用 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 文本的拼写错误,并且在信任中心设置中启用了“信任对 VBA 项目对象模型的访问”。我什至自动启用了所有宏。我不确定这里出了什么问题。这个论坛上的其他人提到需要以管理员身份运行 vbscript 才能使其工作?由于我使用的是工作计算机,因此我没有此系统的管理员权限,因此无法尝试。

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

标签: excelvbscriptvba

解决方案


它对我有用,在对您的公共子测试进行一些更改后,您编写的 With 部分看起来像伪代码而不是“正确代码”。

此外,Time() 不是一个有效的函数,它会返回一个空值,您必须使用“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

推荐阅读