有没有一种方法可以使用Excel VBA打开Word文档,复制Word表并将其粘贴到另一个Word文档

时间:2019-04-03 21:37:03

标签: excel vba ms-word

我试图在Excel中使用包含Word文档文件名和标题的引用表来打开引用的文档,找到引用的标题,然后复制标题(包含内容)并将其粘贴到另一个Word文档中。

单词文档通常包含三个标题。每个标题内通常有5个段落。在每个标题的第二段中,通常都有一张图片(增强型图元文件)。我当前的代码虽然很丑,但似乎可以完成任务。但是,对于某些Word文档,第二段包含1x3单词表或2x3单词表。第一行有一个标题,第二行有一个图片(增强的图元文件),第三行有源注释。对于2x3表,第二列包含与第一列相同类型的信息。

我在使用.Selection和表对象方面做了一些微不足道的尝试,但是我的大脑并不真正理解如何使用它们。现在我已经迷住了几天,需要一些帮助。

由于我是VBA的新手,所以我复制了整个代码。我为此表示歉意,但我不想遗漏任何相关内容。

SecurityConfig.java

理想情况下,我希望能够搜索并找到特定的标题,选择该标题及其内容(但是可能包含许多段落和图片),将其复制,然后将其粘贴到另一个Word文档的末尾

但是,当我的程序运行到这些表之一时,出现运行时错误'4605'-应用程序定义的错误或对象定义的错误。

1 个答案:

答案 0 :(得分:0)

假设您的“标题”使用Word标题样式,则可以使用以下代码:

Set WordApp = CreateObject("word.application")
Set RoundUp = WordApp.Documents.Add("\\ecnoffice05\ilab\ZZ OELR\2. OELR Research\6. Global Economic Briefing\" & forum & " template.docx")
'Rows 2 to 21 contain information on each of the G7 and G20 countries
With ThisWorkbook.Sheets("4 - Add entries to roundup")
  For i = 2 To 21
    'Columns 4,6,8 contain the name of the word document and columns 5,7,9 contain the name of the word document heading that needs to be copied
    'Issue, columns 8 and 9 pertain to trade entries that contain either a 1x3 or 2x3 table which doesn't seem to copy
    For l = 4 To 8 Step 2
      If .Cells(i, column).Value = "X" Then
        If IsError(.Cells(i, l).Value) = False Then
          GEBIssue = .Cells(i, l).Value
          Set GEB = WordApp.Documents.Open("O:\ZZ OELR\2. OELR Research\6. Global Economic Briefing\Final Briefings Distributed\" & GEBIssue & ".docx")
          With GEB
            With .Range
              With .Find
                .ClearFormatting
                .Text = ThisWorkbook.Sheets("4 - Add entries to roundup").Cells(i, l + 1).Value
                .Execute
              End With
              If .Find.Found = True Then
                Set myrange = .Duplicate
                Set myrange = myrange.GoTo(What:=-1, Name:="\HeadingLevel") ' -1 = wdGoToBookmark
                RoundUp.Characters.Last.FormattedText = myrange.FormattedText
              End If
            End With
            .Close False
          End With
        End If
      End If
    Next l
  Next i
End With
RoundUp.SaveAs ("\\ecnoffice05\ilab\ZZ OELR\2. OELR Research\6. Global Economic Briefing\" & forum & " draft 1.docx")
RoundUp.Close False
WordApp.Quit

注意:您应该使用真实的Word模板(即dotx文件)作为模板,而不是文档。