我有一个工作模块可以执行一些数据转换,只需运行vbscript即可在任何Excel工作表上运行。
应该像:
1)运行vbscript,2)选择excel文件,3)将数据转换为另一张表,4)保存并退出。
除了最重要的步骤,第3步之外,我还有一切工作。但是代码在那里,它是一个工作模块,但是我必须导入它并从工作簿中为每个进入的工作簿运行它。我做的不想这样做,这个项目太麻烦了。
有没有一种更简单的方法来重新编程每个模块在VBScript中工作?如果我必须在VBScript中重新编写解决方案,那么有什么好的excel VBScript教程吗?我已经完成了一些研究,无法找到我需要的任何东西。
编辑:
This Solution不是我问题的解决方案。这假定模块已经导入到Excel工作表中。如果我使用它,我会收到错误:
Cannot run the macro 'filename.Module1.macro' The macro may not be available in this workbook or all macros may be disabled
这是因为宏没有添加到工作簿中,正如我上面所说的,我想运行宏而不必将其添加到我运行它的每个工作簿中。或者,如果有一种方法来编写宏的添加脚本然后再运行它,那也可以。
答案 0 :(得分:3)
您无法在其上运行.bas文件,它不是宏或任何可执行文件。它只是文字。
您需要将其导入工作簿,或者(可能是更好的解决方案)将其导入XLAM加载项,并使用Excel实例加载该加载项。您需要修改.bas代码(可能只是稍作修改)才能做到这一点。
或者,使用VBIDE库,您可以在运行时以编程方式将.bas添加到工作簿。不过,我可能会尽量避免这种情况。
您不需要将宏重构为VBS,也不需要使用VB.Net。只要你能在任何 Excel文件中获得.bas,即使你手动将它放在外接程序中,你也应该可以运行它。
Run Excel Macro from Outside Excel Using VBScript From Command Line
答案 1 :(得分:1)
我的桌面上有一个文本文件,它保存为.vbs。
如果我从工作簿中运行宏,则双击它。你可以做什么有限制,但我认为它有点整洁。
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\dmorrison\Desktop\HelloMsg.xlsm'!Module1.Hello"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing