这很奇怪 - 我发誓我只是成功使用了这段代码,但不是它不能正常工作:
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文档中。)
答案 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