修复VBScript中的“未知的运行时错误”代码800A03EC以在不打开Excel的情况下运行宏

时间:2019-06-27 14:35:47

标签: excel vba

我试图创建并运行一个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脚本都位于桌面上。

有人可以帮忙吗?谢谢。

1 个答案:

答案 0 :(得分:2)

代码不起作用,因为它不喜欢包含在执行代码之前打开代码的excel文件的事实:

enter image description here

使用您的代码,尝试执行以下简单步骤,并确保其有效:

  1. 在桌面上创建了Script.xlsm文件。
  2. Modul1中添加了以下内容:

Sub FromExcel()
    MsgBox "FROM EXCEL"
End Sub
  1. 像这样从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
  1. 利润

一种解决方法,如果您想从打开的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。大概检查一下: