我试图创建并运行一个VBScript来运行我在Excel文件上创建的宏(PVT_Paste_Macro.xlsm),而无需打开每个单独的Excel文件(我有528个文件!),这是我的代码:
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\Owner\Desktop\PVT_Paste_Macro.xlsm'!Module1.PVT_Paste_Macro"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing
运行代码后,出现以下错误:
Script: C:\Users\Owner\Desktop\VBA for macros - PVT.vbs
Line: 2
Char: 1
Error: Unknown runtime error
Code: 800A03EC
Source: Microsoft VBScript runtime error
我在打开宏文件时运行脚本。宏文件,我要在其上运行宏的(测试)Excel文件以及VBS脚本都位于桌面上。
有人可以帮忙吗?谢谢。
答案 0 :(得分:2)
代码不起作用,因为它不喜欢包含在执行代码之前打开代码的excel文件的事实:
使用您的代码,尝试执行以下简单步骤,并确保其有效:
Script.xlsm
文件。Modul1
中添加了以下内容:Sub FromExcel()
MsgBox "FROM EXCEL"
End Sub
Script.vbs
调用它:Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\UserName\Desktop\Script.xlsm'!Modul1.FromExcel"
objExcel.Visible = True 'Or "False", depending on what you want.
objExcel.Application.Quit
Set objExcel = Nothing
一种解决方法,如果您想从打开的Excel文件中运行“宏”,则类似GetObject的方法会很有用:
Set objExcel = GetObject("C:\Users\UserName\Desktop\xl.xlsm")
objExcel.Application.Run "Modul1.FromExcel"
objExcel.Application.Quit
Set objExcel = Nothing
但是,这可能是XY problem-应该有更好的方式来处理整个故事,例如从单个独立的Excel文件运行“宏”,这将在桌面中打开其他Excel文件并对其进行处理,而无需VBScript。大概检查一下: