3

我想从 Delphi 运行 Word 文档的宏(子)。

我在 Word 中的宏是

Sub Macro1()  
  'Do Something
End Sub  

在德尔福

Word := CreateOleObject('Word.Application');  
Word.visible := true;  
Word.Documents.Open('c:\_3\Doc\2.docm', true, false);  
word.Run('Macro1');  

并且效果很好
但是当我想增强宏并将参数添加为

Sub Macro1( param1 as string, param2 as string)  
 'Do Something  
End Sub  

并调用

word.Run('Macro1 "Book", "Pool"');  

我收到错误消息
“无法运行指定的宏”
如何使用参数调用宏(子)?

4

2 回答 2

3

您必须像普通参数一样传递宏参数值。

word.Run('Macro1', 'Book', 'Pool');  

有关更多信息,请阅读Application.Run MethodMSDN 文档。

于 2012-07-27T15:20:20.167 回答
1

宏代码:

Sub TestParams(param1 As String)
   MsgBox "Param1 := enter code here" & param1
End Sub

这对我来说也是一场噩梦,因为一旦您创建带有参数的宏,它就不会显示在宏列表中。

我最终通过执行以下
德尔福代码使其工作:

procedure TUtils.RunMacro;
var Test : olevariant;
begin
  Test := 'Hello Word';
  WordApplication.Run('TestParams',Test);
end;
于 2013-03-05T16:43:57.527 回答