从模板复制/粘贴标题
问题描述:
我有一个模板,它有一个包含图片标题的页面。我想将这些图像复制到我的ActiveDocument。我正在使用下面的代码:从模板复制/粘贴标题
Set doc = ActiveDocument
strTemplate = "C:\Users\rajtilak\Desktop\Report.dotx"
Set docTemplate = Documents.Open(strTemplate)
Set hdr1 = docTemplate.Sections(1).headers(wdHeaderFooterPrimary)
Set hdr2 = doc.Sections(3).headers(wdHeaderFooterPrimary)
hdr1.Range.Copy
hdr2.Range.PasteAndFormat wdFormatOriginalFormatting
docTemplate.Close False
这工作正常,但它不是从模板的第1部分,但第5部分复制标题。有没有其他方法使用VBA从Word文件中复制标题?
答
感谢卡齐米日Jawor,我得到的代码工作。以下是更新后的代码:
Dim docTemplate As Document
Dim strTemplate As String
Dim hdr1 As headerfooter
Dim hdr2 As headerfooter
Dim doc As Document
Set doc = ActiveDocument
strTemplate = "C:\Users\rajtilak\Desktop\Report.dotx"
Set docTemplate = Documents.Open(strTemplate)
Set hdr1 = docTemplate.Sections(1).headers(wdHeaderFooterFirstPage)
Set hdr2 = doc.Sections(3).headers(wdHeaderFooterPrimary)
hdr1.Range.Copy
hdr2.Range.Paste
docTemplate.Close False
答
有了这样的对象:
...的index_number
(烦人)不是对象“位置号码”或位置始终代表,但我们可以确认什么像这样子的地方:
Sub ListHeaders()
Dim s As Integer, sec As Section, secs As Sections, outStr As String
Dim h As Integer, hdr As HeaderFooter, hdrs As HeadersFooters
Set secs = ActiveDocument.Sections
For s = 1 To secs.Count
outStr = outStr & "-----" & _
"Section #" & s & " of " & secs.Count & _
" : " & Replace(secs(s).Range.Text, vbCr, "") & _
"-----" & vbCrLf
Set hdrs = ActiveDocument.Sections(s).Headers
outStr = outStr & " Header 1: wdHeaderFooterPrimary : " & Replace(hdrs(wdHeaderFooterPrimary).Range.Text, vbCr, "") & vbCrLf
outStr = outStr & " Header 2: wdHeaderFooterFirstPage : " & Replace(hdrs(wdHeaderFooterFirstPage).Range.Text, vbCr, "") & vbCrLf
outStr = outStr & " Header 3: wdHeaderFooterEvenPages : " & Replace(hdrs(wdHeaderFooterEvenPages).Range.Text, vbCr, "") & vbCrLf
outStr = outStr & vbCrLf
Next s
MsgBox outStr
End Sub
...或文本函数可用于查找具有特定文本(或其他属性)的对象的index_number
。
如果将'hdr1'设置为与[此列表(MSDN)]不同类型的标头,那么该怎么办?(https://msdn.microsoft.com/zh-cn/vba/word-vba/articles/wdheaderfooterindex-enumeration -字)。 –
它的工作!所以我做的是,我从中复制标题的模板,因为我从中复制的页面,我将代码更改为: 设置hdr1 = docTemplate.Sections(1).headers(wdHeaderFooterFirstPage) 其余的,我将代码更改为: 设置hdr2 = doc.Sections(3).headers(wdHeaderFooterPrimary) 它工作。 – rajb