Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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/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
如何复制word页面并粘贴到excel中?_Excel_Vba_Ms Word - Fatal编程技术网

如何复制word页面并粘贴到excel中?

如何复制word页面并粘贴到excel中?,excel,vba,ms-word,Excel,Vba,Ms Word,我试图捕捉word中的页面作为图像,并通过VBA粘贴到Excel中 Function openFile() As String With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = False .Filters.Add "Word Files", "*.doc*", 1 .Show openFi

我试图捕捉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)
    
    Set objSheet = ThisWorkbook.Sheets.Add(After:= _
                   ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    Set objRange = objSheet.Range("A1")
    objSheet.Activate
    
    objWordApp.Visible = False

    Dim objPage As Object 'Page
    Dim objPane As Object 'Pane
    Dim objWindow As Object 'Window
     
    For Each objWindow In objWordDoc.Windows
        For Each objPane In objWindow.Panes
            For Each objPage In objPane.Pages
                Debug.Print "Page"
                objPage.Range.Copy // Stop here because Page doesn't have the Range property
                
                objRange.Select
                objRange.Parent.PasteSpecial DataType:=wdPasteMetafilePicture
                
            Next objPage
        Next objPane
    Next objWindow
    
    objWordDoc.Close
    objWordApp.Quit
End Function

Sub processWord()
    Dim p As String
    p = openFile()
    readWord (p)
End Sub
由于页面没有范围属性,如何为每个页面选择范围?

基本上:

Dim i As Long, wdRng As Object
With objWordDoc
  Set wdRng = .Range(0, 0)
  For i = 1 To .ComputeStatistics(2)
    ' Point to the page we want to process
    Set wdRng = wdRng.GoTo(1, , i)
    Set wdRng = wdRng.GoTo(-1, , , "\Page")
    wdRng.Copy
    ' Output the page.
    objRange.Parent.PasteSpecial DataType:=wdPasteMetafilePicture
  Next i
End With