Word Window 类型不匹配

Word Window Type mismatch

我正在尝试将word中的页面捕获为图像并通过VBA粘贴到Excel中,下面是完整的代码。但在下面的评论中出现 Type Mismatch 错误。如何修复错误?

Function openFile() As String
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Filters.Add "Word Files", "*.doc*", 1
        .Show
        openFile = .SelectedItems.Item(1)
    End With
End Function

Function readWord(ByVal path As String)
    Debug.Print "Read word", path
    
    Set objWordApp = CreateObject("Word.Application")
    Set objWordDoc = objWordApp.Documents.Open(path)
    
    objWordApp.Visible = False

    Dim objPage As Page
    Dim objPane As Pane
    Dim objWindow As Window
    
    Debug.Print objWordDoc.Windows.Count
    Debug.Print TypeName(objWordDoc.Windows.Item(1))
     
    For Each objWindow In objWordDoc.Windows 'Got Type mismatch Here
        For Each objPane In objWindow.Panes
            For Each objPage In objPane.Pages
                Debug.Print "Page"
            Next objPage
        Next objPane
    Next objWindow
    
End Function

Sub processWord()
    Dim p As String
    p = openFile()
    readWord (p)
End Sub

错误是因为您的代码包含混乱的对象。

您正在尝试对 Word 使用后期绑定,但您声明:

Dim objPage As Page
Dim objPane As Pane
Dim objWindow As Window

由于您似乎在 Excel 中编写代码,因此这些对象是:

Dim objPage As Excel.Page
Dim objPane As Excel.Pane
Dim objWindow As Excel.Window

这会导致类型不匹配错误。

我建议您在代码完全正常工作之前避免使用后期绑定。然后你可以把所有的对象声明都改成As Object,如果你真的觉得有必要的话。

顺便说一下,如果您认为可以使用 documentation 中列出的 SaveAsPNG 方法来获取文档页面的图像,那么您不能 - 它不存在。