为啥从 Word doc 调用宏时出现错误 1004,而不是从 Excel 调用?

Posted

技术标签:

【中文标题】为啥从 Word doc 调用宏时出现错误 1004,而不是从 Excel 调用?【英文标题】:Why go I get error 1004 when calling a macro from Word doc, but not from Excel?为什么从 Word doc 调用宏时出现错误 1004,而不是从 Excel 调用? 【发布时间】:2011-09-19 18:43:41 【问题描述】:

在 Word 文件中,我有一个宏,可以打开 Excel 文件并调用该文件中的宏。 (我正在使用 VBA。)这是 Word 中的简单代码:

Set oExcelApp = CreateObject("Excel.Application")
Set oWorkbook = oExcelApp.workbooks.Open("C:\Documents and Settings\Eddy\Mina dokument\Insajt\Arbeten\Prido\Affärssystem\www\modules\mod_order\eco.xls")
oExcelApp.Visible = True
oExcelApp.Run "'ECO.xls'!Ritning"

Excel 文件打开并运行宏,但随后出现错误提示(翻译自瑞典语。):

运行时错误“1004” 无法为 PageSetup 类输入 PrintArea 属性

如果我选择调试模式,这一行会突出显示:

.PrintArea = "$A$1:$O$49;$Q$1:$AE$49;$Q$50:$AE$97;$AG$50:$AU$97"

整段代码是这样的:

   If Sheets("Beräkningar").Cells(6, 2) = "4V" Then 
        With Sheets("Ritn").PageSetup 
            .PrintArea = "$A$1:$O$49;$Q$1:$AE$49;$Q$50:$AE$97;$AG$50:$AU$97" 
            .Zoom = 85 
        End With 
        Sheets("Ritn").PrintOut 
    End If

现在来说真正奇怪的事情。如果我在 Excel 文件中中止对宏的调用,而只是手动调用同一个宏,它就像一个魅力。如果我手动打开 Excel 文件并启动宏也是一样,那么一切正常。

【问题讨论】:

【参考方案1】:

尝试使用逗号分隔列表而不是分号

.PrintArea = "$A$1:$O$49,$Q$1:$AE$49,$Q$50:$AE$97,$AG$50:$AU$97"

【讨论】:

值得一试,但分隔符看起来适合区域设置。 (根据 OP,直接调用时有效)。

以上是关于为啥从 Word doc 调用宏时出现错误 1004,而不是从 Excel 调用?的主要内容,如果未能解决你的问题,请参考以下文章

从 rexx 代码向 ispf 宏传递参数时出现无效长度错误

为啥调用 API 时出现 CORS 错误

为啥调用 GetThreadTimes 时出现“句柄无效”错误?

为啥函数调用在 swiftui 中返回不可变值时出现错误?

为啥从 Eclipse 运行 Google App 时出现以下错误?

为啥在我的 Web 服务中调用此方法时出现错误“无法将类型 'void' 隐式转换为 'string'?