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 方法来获取文档页面的图像,那么您不能 - 它不存在。
我正在尝试将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 方法来获取文档页面的图像,那么您不能 - 它不存在。