我试图在Excel中使用包含Word文档文件名和标题的引用表来打开引用的文档,找到引用的标题,然后复制标题(包含内容)并将其粘贴到另一个Word文档中。
单词文档通常包含三个标题。每个标题内通常有5个段落。在每个标题的第二段中,通常都有一张图片(增强型图元文件)。我当前的代码虽然很丑,但似乎可以完成任务。但是,对于某些Word文档,第二段包含1x3单词表或2x3单词表。第一行有一个标题,第二行有一个图片(增强的图元文件),第三行有源注释。对于2x3表,第二列包含与第一列相同类型的信息。
我在使用.Selection和表对象方面做了一些微不足道的尝试,但是我的大脑并不真正理解如何使用它们。现在我已经迷住了几天,需要一些帮助。
由于我是VBA的新手,所以我复制了整个代码。我为此表示歉意,但我不想遗漏任何相关内容。
SecurityConfig.java
理想情况下,我希望能够搜索并找到特定的标题,选择该标题及其内容(但是可能包含许多段落和图片),将其复制,然后将其粘贴到另一个Word文档的末尾
但是,当我的程序运行到这些表之一时,出现运行时错误'4605'-应用程序定义的错误或对象定义的错误。
答案 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文件)作为模板,而不是文档。