我正在尝试从Excel文件外部运行Excel宏 . 我目前正在使用从命令行运行的“.vbs”文件,但它一直告诉我无法找到宏 . 这是我正在尝试使用的脚本
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("test.xls")
objExcel.Application.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Test value"
objExcel.Application.Run "Macro.TestMacro()"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Echo "Finished."
WScript.Quit
这是我正在尝试访问的宏:
Sub TestMacro()
'first set a string which contains the path to the file you want to create.
'this example creates one and stores it in the root directory
MyFile = "C:\Users\username\Desktop\" & "TestResult.txt"
'set and open file for output
fnum = FreeFile()
Open MyFile For Output As fnum
'write project info and then a blank line. Note the comma is required
Write #fnum, "I wrote this"
Write #fnum,
'use Print when you want the string without quotation marks
Print #fnum, "I printed this"
Close #fnum
End Sub
我尝试了位于Is it possible to run a macro in Excel from external command?的解决方案来实现这一点(并且当然已经修改)但是它找不到't seem to work. I keep getting the error `Microsoft Office Excel: The macro ' Macro.TestMacro' .
编辑:Excel 2003 .
7 回答
好的,它实际上很简单 . 假设您的宏位于模块中,而不是在其中一个工作表中,则使用:
对于带空格的文件名,请用引号括住文件名 .
如果你把宏放在一张纸下,比如说sheet1,那么假设sheet1拥有它所具有的功能 .
注意:您不需要您一直使用的macro.testfunction表示法 .
我想你是想这么做的? ( TRIED AND TESTED )
此代码将打开文件Test.xls并运行宏
TestMacro
,它将依次写入文本文件TestResult.txt
我试图将@ Siddhart的代码改编为运行我的
open_form
宏的相对路径,但它似乎没有用 . 这是我的第一次尝试 . 我的工作解决方案如下 .EDIT
我实际上已经解决了这个问题,以防万一有人想要运行一个“相似”的用户表单:一个独立的应用程序:
我面临的问题:
1 - 我不想使用Workbook_Open事件,因为excel被锁定为只读 . 2 - 批处理命令受限于(据我所知)它无法调用宏的事实 .
我首先写了一个宏来启动我的userform同时隐藏应用程序:
然后我创建了一个vbs来启动这个宏(用相对路径做这件事很棘手):
我终于做了一个批处理文件来执行VBS ......
请注意,我还在_1061082中包含了"Set back to visible":
无论如何,感谢您的帮助,我希望如果有人需要,这将有所帮助
我尝试了上面的方法,但我得到了“无法找到宏”错误 . 这是有效的最终代码!
在我的情况下,MyMacro碰巧在Sheet1下,因此Sheet1.MyMacro .
在我杀了一整天后,我的相关问题被一个正义的手移除,搜索如何击败“未找到或未发现的宏”错误,在这里发布唯一适用于我的语法(application.run没有,无论如何我试过的)
Excel 2010,Win 7
如果您尝试从个人工作簿运行宏,它可能无法正常工作,因为使用VBScript打开Excel文件不会自动打开您的PERSONAL.XLSB . 你需要做这样的事情:
因此,在循环开始时,它将打开personals.xlsb并从那里为所有其他工作簿运行宏 . 只是想我应该在这里发布,以防万一有人像我一样跑过这个但是无法弄清楚为什么宏还没有运行 .
您好使用此线程来获得解决方案,然后我想分享我做的以防万一有人可以使用它 .
我想要的是调用一个宏来改变一些单元格并删除一些行,但我需要超过1500个excels(每个文件大约花费3分钟)
主要问题: - 当从vbe调用宏时,我遇到了同样的问题,从PERSONAL.XLSB调用宏是不可能的,当脚本操作excel时没有执行personal.xlsb并且在宏窗口中没有任何选项
我通过加载宏(a.xlsm)保持打开一个excel文件解决了这个问题(在执行脚本之前)
然后我从脚本选择的excel中调用宏