【问题标题】:Using VBS to open text file in excel and run macro without opening excel使用VBS在excel中打开文本文件并在不打开excel的情况下运行宏
【发布时间】:2015-09-15 20:19:42
【问题描述】:

这可能听起来令人困惑,我不完全确定是否可以按照我想要的方式进行操作,但我想做的是创建一个脚本,该脚本将采用 .txt 文件并在其上运行 Excel 宏它,而无需实际打开 Excel 或文件。我正在阅读的博客之一建议使用此方法,但我对 VBS 不是很熟悉。

Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'Path\Test.xlsm'!Module.Macro"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

当我尝试将它与.txt 文件一起使用时,这不起作用。 我收到的错误是Cannot run the macro Path.... The macro may not be available in this workbook or all macros may be disabled

我确信这与我缺乏 VBS 知识有关,但到目前为止,它是我找到的最接近我正在寻找的脚本。我正在尝试做的事情可能吗?

【问题讨论】:

  • 为了清楚起见,您在创建 Excel.Application 对象时已经打开了 Excel。您只是还没有打开工作簿,这就是您的问题所在。

标签: excel vbscript


【解决方案1】:

您需要先打开工作簿,然后才能从中运行宏。

...
Set wb = objExcel.Workbooks.Open("C:\path\to\Test.xlsm")
objExcel.Application.Run "'Path\Test.xlsm'!Module.Macro"
...

如果不打开 Excel 或包含宏的文件,您将无法运行宏。如果你想要类似的东西,你需要将 VBA 代码翻译成普通的 VBScript。

【讨论】:

  • 嗯,我尝试添加你的 sn-p 代码,只是为了让它像你描述的那样工作,但我仍然收到同样的错误。
  • 是的,一旦我进入 Excel,我就可以很好地运行宏
【解决方案2】:

路径语句需要完整路径,例如" c:\ .... " 我认为应该是Module1.Macro_Name(不是Module) 写在记事本上,但在桌面上用.vbs 保存。直接点击运行

【讨论】:

    最近更新 更多