目的:在1.xls中运行 宏A,该宏将打开word文件 2.doc, 在2.doc中获取一些值,
      返回给 宏A。 在2.doc中获取值的过程,已经在word下做出了宏B。       sub 宏B     '--------- word环境下的代码
         with ...
           if... then
             ...
           end if
         end with
       end sub需求:不想把宏B放在word中,而是想把宏B的代码放在 宏A 的代码段内,A向2.doc
      发送宏B的代码,并让word运行它。问题:目前我只能想到用 DDEExecute 语句。但是行不通:
       1。DDEExecute channelN, command 中, command 被传送时,在word中被
          解读为 wordbasic语句。 这样要把宏B中的语句自己转化为wordbaisc语
          言,太麻烦。
       2。即使转化成 wordbasic,也要很麻烦地加上[],和Chr(34),再进行string
          连接,很头疼。
      应该有一个办法,将宏B的代码段较为简单的封装在宏A中,并传送到word中得
      到执行吧?望高手指教!感谢
       

解决方案 »

  1.   

    你可以动态把宏代码插入到WORD文件中再运行它。
      

  2.   

    可先获得Word对象,然后用该对象操纵Word,获得Word对象的方法:
    On Error Resume Next
    Set wd = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Err.Clear
        Set wd = CreateObject("Word.Application")
    End If
    wd.Visible = True
    接下来,就可用wd操纵Word,让Word运行代码,如:
    Set ReportFile = wd.Documents.Add
    ReportFile.Content.InsertParagraphAfter