首页 文章

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

提问于
浏览
1

早上好,

我正在尝试使用vbscript运行一个简单的测试宏,我收到此错误:“无法运行宏'测试' . 宏可能在此工作簿中不可用,或者所有宏都可能被禁用 . ”

这是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

    它对我有用,在对您的公共子测试进行一些更改后,您编写的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
    
  • 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”选项不应影响宏是否运行,但谁知道?也许在游戏中有另一个选项,默认方向错误?

  • 1

    我很感谢这个问题的所有帮助 . 在弄乱了一分钟之后我弄清楚了我的错误 . 在上面的例子中,写入“Test”子的模块也被命名为“Test”,这就是出错的原因 .

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

相关问题