2017-12-18 205 views
1

我有一个模板,它有一个包含图片标题的页面。我想将这些图像复制到我的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文件中复制标题?

+0

如果将'hdr1'设置为与[此列表(MSDN)]不同类型的标头,那么该怎么办?(https://msdn.microsoft.com/zh-cn/vba/word-vba/articles/wdheaderfooterindex-enumeration -字)。 –

+0

它的工作!所以我做的是,我从中复制标题的模板,因为我从中复制的页面,我将代码更改为: 设置hdr1 = docTemplate.Sections(1).headers(wdHeaderFooterFirstPage) 其余的,我将代码更改为: 设置hdr2 = doc.Sections(3).headers(wdHeaderFooterPrimary) 它工作。 – rajb

回答

2

感谢卡齐米日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 
2

有了这样的对象:

...的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