计算(并激活)打开的Word文档

时间:2016-08-15 16:04:16

标签: vba excel-vba excel

这很奇怪 - 我发誓我只是成功使用了这段代码,但不是它不能正常工作:

Sub t()
Dim wdApp As Object
Set wdApp = GetObject(, "Word.Application")
Debug.Print wdApp.Documents.Count
End Sub

从Excel中,它应该只是意识到有一个Word文档打开,并返回1。但是,由于某种原因,我得到0。我还试过Set wdApp = CreateObject("Word.Application").

我可以俯瞰什么?没有错误抛出,它只是没有显示我打开了文档。

(注意:我从this thread得到了这个想法,因为我想要复制Excel范围并粘贴到Word文档中。)

1 个答案:

答案 0 :(得分:2)

同样作为最佳实践,始终在错误处理中释放资源,以便在宏成功或失败时始终关闭此类进程。

Sub t()
On Error Goto ErrHandle
    Dim wdApp As Object
    Set wdApp = GetObject(, "Word.Application")

    Debug.Print wdApp.Documents.Count

    Set wdApp = Nothing
    Exit Sub

ErrHandle:
    Set wdApp = Nothing
    Exit Sub
End Sub

如果从其他语言(如Python,PHP,R等)运行COM接口,则使用try/catch过程始终清除此类对象,而不管失败或成功。下面是Python中宏的对应部分:

import win32com.client

try:
    wdApp = win32com.client.Dispatch("Word.Application")

    print(wdApp.Documents.Count)

except Exception as e:
    print(e)

finally:    
    wdApp = None