将每个Word表从源文档复制到目标文档循环逐页

问题描述 投票:0回答:1

我有下面的代码,它将源文档Tables.docx中的所有表复制到文档末尾的目标文档。所有下面的代码都没有任何错误。

在目标文件Temp.doc,中,我有一个或两个行的表格标题,然后一行空白和一个文字行从单词开始参考附录,详细说明如下。

Temp.doc


Page 1表1. ........(表格标题)摘要

(一行空白)

参考附录1(一行文字)

剩余页面空白,其中第1页的表1来自要粘贴或插入的源文档。


表1续........(表格标题)摘要

(一行空白)

参考附录1(一行文字)

剩余页面空白,其中第2页的表2来自要粘贴或插入的源文档。


表2. ........(表格标题)摘要

(一行空白)

参考附录2(一行文字)

剩余页面空白,其中第3页的表3来自要粘贴或插入的源文档。

如何从第1页上的目标文档第3行下面的源文档中复制第一页表。同样从源文档的第2页复制表并粘贴到目标文档的第2页第3行下面等等。

我对宏观知之甚少。因此,我试图在代码下编辑的内容不包括在内以减少对专家的混淆。

Sub ExtractTables()

    Dim objTable As Table
    Dim SourceDoc As Document
    Dim TargetDoc As Document
    Dim objRange As Range



    Set SourceDoc = WrdApp.Documents.Open(ActiveDocument.Path & "\Tables.docx")
    Set TargetDoc = WrdApp.Documents.Open(ActiveDocument.Path & "\Temp.doc")

    For Each objTable In SourceDoc.Tables
        objTable.Range.Select
        Selection.Copy

        Set objRange = TargetDoc.Range
        objRange.Collapse Direction:=wdCollapseEnd
        objRange.PasteSpecial DataType:=wdPasteRTF
        objRange.Collapse Direction:=wdCollapseEnd
        objRange.Text = vbCr            
    Next objTable     
End Sub
vba ms-word word-vba
1个回答
3
投票

你的描述充其量是模糊不清的。我不知道你的意思

在目标文件Temp.doc中,我有一个或两个行的表格标题,然后一行空白和一个文字行从单词开始参考附录

也就是说,如果要在Temp.doc中插入书签以指示这些复制表的去向,可以使用以下代码:

Sub CopyTables()
Dim DocSrc As Document, DocTgt As Document, T As Long

Set DocSrc = WrdApp.Documents.Open(ActiveDocument.Path & "\Tables.docx")
Set DocTgt = WrdApp.Documents.Open(ActiveDocument.Path & "\Temp.doc")

With DocSrc
  For T = 1 To .Tables.Count
    If DocTgt.Bookmarks.Exists("Tbl" & T) Then
      DocTgt.Bookmarks("Tbl" & T).Range.FormattedText = .Tables(T).Range.FormattedText
    End If
  Next
End With
End Sub

上面的代码假设Temp.doc中的书签被命名为Tbl1,Tbl2等。

为什么你有这样的代码也不明显:

Dim WrdApp As Word.Application
Dim bWeStartedWord As Boolean
…

On Error Resume Next
Set WrdApp = GetObject(, "Word.Application")
On Error GoTo 0

If WrdApp Is Nothing Then
    Set WrdApp = CreateObject("Word.Application")
    bWeStartedWord = True
End If

WrdApp.Visible = True     

因为没有任何迹象表明涉及Word以外的任何应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.