【问题标题】:How to run a macro only if the Excel workbook is open with VBScript?仅当 Excel 工作簿使用 VBScript 打开时,如何运行宏?
【发布时间】:2012-09-12 00:32:36
【问题描述】:

世界!

我正在尝试在我的工作中自动执行报告任务,但我遇到了以下情况:

我需要使用脚本在工作簿上执行宏。我尝试编写一个 vbscript 来完成这项工作,这是它的重要部分:

Set objWbk = GetObject("***Path***\test.xlsm")

objWbk.Application.Run "test.xlsm!test" 

WScript.Quit

宏运行完美。我真正的问题是我只想在工作簿打开时才做报告。

有没有办法(在 vbs 或 vba 中)确定该工作簿是否打开? (顺便说一下,它位于我网络上的另一台计算机上)

【问题讨论】:

  • 如果工作簿已打开,是否要运行宏?还是要在GetObject() 完成打开工作簿后运行宏?
  • @AnsgarWiechers 仅当工作簿已打开时

标签: vba excel vbscript automation


【解决方案1】:

由于您只想在工作簿已打开时运行宏,因此可能会这样:

wbName = "test.xlsm"
wbFullName = "***Path***\" & wbName

Set xl = GetObject(, "Excel.Application")
For Each wb In xl.Workbooks
  If LCase(wb.Path & "\" & wb.Name) = wbFullName Then
    wb.Application.Run wbName & "!test"
  End If
Next

【讨论】:

    【解决方案2】:

    这没有经过全面测试,可能需要进行一些修改,但看看它是否能满足您的需求。

    On Error Resume Next
    Set objWbk = GetObject("***Path***\test.xlsm")
    
    If Err.Number = 0 Then objWbk.Application.Run "test.xlsm!test" 
    
    wScript.Quit
    

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多