我很抱歉用这些琐事来麻烦社区,但我被卡住了。我有一个Word文件,其中有宏,我已经在Word文件中测试。宏有一个参数,必须通过它来执行此操作。该参数将向代码发出信号,表明是否已从Word文件调用此宏,现在希望是是否已从Excel调用此宏,在Excel中,它将执行略有不同的操作。
当我不需要在代码中进行这个切换时,stackflow社区为我提供了功能完美的“run”方法:
'objW.Run "'" & d.FullName & "!" & MacroName 'This worked when the Macro did not have any parameters...
字符串
我现在已经尝试了以下7个不同的版本(显然在我注解掉它们之前一次一个),没有一个能用
Callcode = "Excel"
MacroName = "GetCodedData"
'objW.Run "'" & d.FullName & "!" & MacroName , & Callcode 'Version 1
'objW.Run ("'" & d.FullName & "!" & MacroName ", " & Callcode) 'Version 2
'objW.Run ("'" & d.FullName & "!" & MacroName, Callcode) 'Version 3
'objW.Run "'" & d.FullName & "!" & MacroName(Callcode) 'Version 4
'objW.Run "'" & d.FullName & "!" & MacroName "("Callcode")" 'Version 5
'objW.Run "'" & d.FullName & "!" & MacroName & "(" & Callcode & ")" 'Version 6
'objW.Run "'" & d.FullName & "!" & MacroName, varg1:=Callcode 'Version 7
型
版本1,2,3,5给予编译器错误。版本4给出了运行时错误13(不匹配类型,但我的变量被声明为与宏匹配),版本6给出了“无法运行指定的宏”,版本7给出了错误438。我显然错过了一些明显的东西。
2条答案
按热度按时间nqwrtyyt1#
你可以使用多个过程而不是一个参数(因为你还没有发布完整的Word代码,那么这可能需要调整以匹配它)
字符串
然后调整Excel中在Word中运行代码的行以调用
CalledFromExcel
而不是调用GetCodedData
,Word可以调用CalledFromWord
(或者您可以省略此操作,Word可以调用GetCodedData
并直接传入“Word”)kq4fsx7k2#
我认为JohnM的解决方案是一个很好的方法。
以下是我在Excel中尝试的内容和结果。
请注意,如果包含sub的文档不是Word中的ActiveDocument,即使是“工作”方法也不起作用-您应该确保情况确实如此。
参见先前:https://stackoverflow.com/a/39543074/478884
字符串
Word宏看起来像这样(在“WordMacro.docm”中的Module 1中)
型