Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 字窗口类型不匹配_Vba_Ms Word - Fatal编程技术网

Vba 字窗口类型不匹配

Vba 字窗口类型不匹配,vba,ms-word,Vba,Ms Word,我正试图捕获word中的页面作为图像,并通过VBA粘贴到Excel中,下面是完整的代码。但是得到了一个类型不匹配错误,如下面的注释所示。如何修复错误 Function openFile() As String With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = False .Filters.Add "Word Files", "*.d

我正试图捕获word中的页面作为图像,并通过VBA粘贴到Excel中,下面是完整的代码。但是得到了一个
类型不匹配
错误,如下面的注释所示。如何修复错误

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


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

LOL<代码>你不能-它根本不存在。让我伤心的消息!