【问题标题】:Fixing "Unknown runtime error" code 800A03EC in VBScript to run macro without opening Excel修复 VBScript 中的“未知运行时错误”代码 800A03EC 以在不打开 Excel 的情况下运行宏
【发布时间】:2019-06-27 14:35:47
【问题描述】:

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

有人可以帮忙吗?谢谢。

【问题讨论】:

  • 这是您正在运行的确切代码吗(我认为不是因为您有 528 个文件,每个文件都没有一个 vbs 脚本,是吗)?如果它不是你实际运行的代码,你是不是和here有同样的问题?
  • 可能是位数的问题。尝试在控制台中运行%WINDIR%\wscript.exe "C:\Users\Owner\Desktop\VBA for macros - PVT.vbs" 或%WINDIR%\SysWOW64\wscript.exe "C:\Users\Owner\Desktop\VBA for macros - PVT.vbs" (cmd)
  • 您也可以尝试在单独的调用中打开工作簿:objExcel.Workbooks.Open "C:\Users\Owner\Desktop\PVT_Paste_Macro.xlsm,然后是 objExcel.Run "Module1.PVT_Paste_Macro"。

标签: excel vba


【解决方案1】:

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

使用您的代码,尝试这个简单的步骤并确保它有效:

  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。可能检查这些:

【讨论】:

  • @DavidZemens - 我使用的是xlsb,默认情况下,它也适用于 xlsm。我使用objExcel.Application 来模拟操作的代码。
  • 除了文件路径之外,你的代码和 OP 的区别是什么?
  • @Vityata,你对这篇文章的回答是说没有问题只是因为你无法重现错误吗?
  • @FlorentB。 - 我的回答说大约 70%。另外 30% 的人表示错误可能出在未显示的 VBA 代码中,从而帮助 OP 更好地调试。
  • @Vityata,如果您无法解释错误,我认为写答案没有任何价值。一条评论说您无法重现该错误就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-03
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多