如何将ActiveDocument的句柄保存到变量?

时间:2012-04-15 04:06:50

标签: vba word-vba

如何在Microsoft Word中获取ActiveDocument的Windows句柄?

我希望将句柄值保存到变量。

2 个答案:

答案 0 :(得分:3)

您可以使用FindWindow函数在当前活动的单词应用程序中获取窗口的句柄:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

MS Word的类名是" OpusApp"。如果您只打开了一个Word应用程序,则以下内容将返回该窗口的句柄:

Public Function Test1()
Dim lhWnd As Long
lhWnd = FindWindow("OpusApp", vbNullString)
End Function

注意当您有多个活动的Word应用程序时,可以添加窗口标题的名称。例如,如果它保存为" Stanigator.doc",则标题将显示为" Stanigator - Microsoft Word"。所以:

Public Function Test2()
Dim lhWnd As Long
lhWnd = FindWindow(vbNullString, "Stanigator - Microsoft Word")
End Function

可能派上用场的其他API是:

Private Declare Function GetActiveWindow Lib "user32" () As Long

修改

我打算推荐VSTO方法,但基于这个看似不明智的链接: Connect Issue: VSTO API support for MS Word Main Window Handle

答案 1 :(得分:0)

蒂姆·威廉姆斯指出,这是Set myDoc = ActiveDocument