2017-06-21 13 views
1

我正面臨一個煩人的問題,我只想從另一個Word實例安排異步宏,這恰好是相同的.doc文件。如何安排來自WORD的異步宏

含義,在ThisDocument命名空間,我有以下的代碼片段:

Public Sub Document_Open() 
    Set Obj = New Word.Application 
    Obj.OnTime Now + TimeValue("00:00:01"), "Module1.Test" 
End Sub 

我宣佈一個新的Word對象是由於以下原因:

  1. 我的宏可能會阻止用戶I \ O
  2. 用戶可能在宏完成其任務之前關閉文檔

,並宣佈了一個名爲Module1模塊用一個簡單的MsgBox

Public Sub Test() 
    MsgBox "hhh" 
End Sub 

不用說了,什麼都沒有發生,我無法檢查什麼OnTime函數返回。

我也試過以下組合:

"!Module1.Test" 
"c:\\....\\file.doc!Module1.Test" 

缺少什麼我在這裏?

回答

0

您新創建的Word應用程序(由Word.Application對象表示)沒有打開文檔。因此,就他所知,沒有「Module1」。您想從同一文檔運行代碼的事實並不重要。這是Word的另一個實例。

事情是這樣工作的:

'''''''' ThisDocument 
Option Explicit 

Private Sub Document_Open() 
    Dim res As VbMsgBoxResult 
    Dim Obj As Word.Application 

    If Application.Visible Then 
     res = MsgBox("Hello", vbOKCancel, "Hi!") 
    Else 
     Exit Sub 
    End If 

    If res = vbOK Then 
     Set Obj = New Word.Application 
     Obj.Documents.Open "C:\Users\conio\Desktop\Hello.docm", , True 
     Obj.OnTime Now + TimeValue("00:00:01"), "Module1.Foo" 
    End If 
End Sub 

'''''''' Module1 
Public Sub Foo() 
    If Not Application.Visible Then 
     MsgBox "Foo" 
     Application.Quit 
    End If 
End Sub 

也許你想使用一個不同的檢查交互式運行和無人值守運行區分。