Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在VBScript中运行excel VBA模块_Vba_Excel_Vbscript - Fatal编程技术网

有没有办法在VBScript中运行excel VBA模块

有没有办法在VBScript中运行excel VBA模块,vba,excel,vbscript,Vba,Excel,Vbscript,我有一个工作模块,它可以执行一些数据转换,我想通过运行vbscript在任何excel工作表上运行这些转换 它的工作原理应该是: 1) 运行vbscript,2)选择excel文件,3)将数据转换为其他工作表,4)保存并退出 除了最重要的一步,第三步之外,我的一切都正常。不管代码在哪里,它都是一个工作模块,但我必须导入它并从工作簿中为每个工作簿运行它。我不想这样做,这对这个项目来说太麻烦了 有没有比重新编程每个模块在VBScript中工作更简单的方法?如果我必须用VBScript重新编写解决方案

我有一个工作模块,它可以执行一些数据转换,我想通过运行vbscript在任何excel工作表上运行这些转换

它的工作原理应该是:

1) 运行vbscript,2)选择excel文件,3)将数据转换为其他工作表,4)保存并退出

除了最重要的一步,第三步之外,我的一切都正常。不管代码在哪里,它都是一个工作模块,但我必须导入它并从工作簿中为每个工作簿运行它。我不想这样做,这对这个项目来说太麻烦了

有没有比重新编程每个模块在VBScript中工作更简单的方法?如果我必须用VBScript重新编写解决方案,有没有好的excel VBScript教程?我做了一些研究,找不到任何我需要的深度

编辑:

这不是解决我问题的办法。这假定模块已导入excel工作表。如果使用此选项,则会出现以下错误:

Cannot run the macro 'filename.Module1.macro' The macro may not be available in this workbook or all macros may be disabled

这是因为宏没有添加到工作簿中,正如我前面所述,我希望运行宏,而不必将其添加到我运行此操作的每个工作簿中。或者,如果有一种方法可以编写宏的添加脚本,然后运行它,也可以。

我的桌面上有一个文本文件,它保存为.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

不能单独运行.bas文件,它不是宏或任何可执行文件。只是文字

您需要将其导入工作簿,或者(可能是更好的解决方案)将其导入XLAM外接程序,并将该外接程序与Excel实例一起加载。要做到这一点,您需要修改.bas代码(可能只是轻微的更改)

或者,使用VBIDE库,您可以在运行时以编程方式将.bas添加到工作簿中。不过,我可能会尽量避免这种情况

您不需要在VBS中重构宏,也不需要使用VB.Net。只要可以在任何Excel文件中获取.bas,即使手动将其放入加载项,也应该能够运行它


为什么要使用VBScript?我建议使用VB.NET来自动化Excel。就像这样:第三步可能的重复听起来比你说的要复杂。如果该代码不存在于工作簿中,而存在于其他工作簿中或作为.bas文件等,则需要导入该代码,这需要一些权限设置,而这些设置是无法通过编程实现的。但是,上面的其他链接回答了一个直接的问题:可能吗。对如果宏存在并且可以访问,那么只要您在Excel应用程序实例上有句柄,就可以运行它。是的,如果宏没有添加到工作簿中,那么它在哪里?@DavidZemens这就是我要问的;如果可以运行宏而不将其添加到工作簿中。这并不复杂,只是很多工作,因为我使用的这些宏很大。看来我得用VBScript重新编写解决方案了?或者按照上面的建议试用VB.NET?我将可重用代码放在PERSONAL.XLS中,这样无论我使用什么工作簿,它都可以随时使用@HackSlash我已经很久没有在Excel中做任何实质性的事情了,我甚至忘记了这是一个选项哈哈。