为啥从 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 宏传递参数时出现无效长度错误
为啥调用 GetThreadTimes 时出现“句柄无效”错误?