代码之家  ›  专栏  ›  技术社区  ›  Mike

Word-VBA -将文档属性字段添加到页脚删除现有的页码

  •  0
  • Mike  · 技术社区  · 8 年前

    我要在文档中每一页的页脚中标记一个文档变量字段。我已经知道如何添加字段。然而,在这样做时,页脚中已经存在的页码字段被禁用,只留下文本,不再充当动态页码。任何帮助都将不胜感激。

    这是我的代码,它添加了字段,但以某种方式禁用了页码。(“sectionFooter.Range.Text=sectionFooter.Range.Text+”行是我找到的唯一方法,甚至可以让页码继续显示):

    For Each docSection In ActiveDocument.Sections
        For Each sectionFooter In docSection.Footers
    
                sectionFooter.Range.Collapse wdCollapseEnd
                sectionFooter.Range.Text = sectionFooter.Range.Text + " "
                sectionFooter.Range.Collapse wdCollapseEnd
                Dim newPP As Paragraph
                Set newPP = sectionFooter.Range.Paragraphs.Add()
    
                newPP.Range.Font.Size = 8
                newPP.Range.Font.Name = "Arial"
                ActiveDocument.Fields.Add Range:=newPP.Range, Type:=wdFieldEmpty, Text:="DOCVARIABLE  ndGeneratedStamp", preserveformatting:=False
    
        Next
    Next
    
    3 回复  |  直到 8 年前
        1
  •  1
  •   Rich Michaels    8 年前

    如果这就是你想要的新领域定位,然后尝试这样的东西。。。

    Dim docSection As word.Section, sectionFooter As word.HeaderFooter
    Dim rng As word.Range
    For Each docSection In ActiveDocument.Sections
        For Each sectionFooter In docSection.Footers
            Set rng = sectionFooter.Range
            rng.InsertParagraphAfter
            rng.Collapse wdCollapseEnd
            rng.Font.Size = 8
            rng.Font.Name = "Arial"
            rng.Fields.Add Range:=rng, Type:=wdFieldEmpty, Text:="DOCVARIABLE  ndGeneratedStamp", PreserveFormatting:=False
        Next
    Next
    
        2
  •  0
  •   Mike    8 年前

    里奇的回答处理了繁重的工作,但是对于任何遇到这种情况的人来说,他想说明我是如何隔离新段落并应用字体的。

    Set rng = sectionFooter.Range
    
                rng.InsertParagraphAfter
                Set rng = sectionFooter.Range
                rng.Collapse wdCollapseEnd
                Set newPP = rng.Paragraphs.Last
                newPP.Range.Font.Size = 8
                newPP.Range.Font.Name = "Arial"
                rng.Fields.Add Range:=newPP.Range, Type:=wdFieldEmpty, Text:="DOCVARIABLE  ndGeneratedStamp", preserveformatting:=False
    
        3
  •  -1
  •   Seiya Su    8 年前

    注意 如果使用这种方法,我们需要先设置页码,然后运行宏。

    Dim docSection As Word.Section, sectionFooter As Word.HeaderFooter 
    For Each docSection In ActiveDocument.Sections
        For Each sectionFooter In docSection.Footers
                'sectionFooter.Range.Collapse wdCollapseEnd
                'sectionFooter.Range.Text = sectionFooter.Range.Text + " "
                sectionFooter.Range.Collapse wdCollapseEnd
                Dim newPP As Paragraph
                Set newPP = sectionFooter.Range.Paragraphs.Add()
    
                newPP.Range.Font.Size = 8
                newPP.Range.Font.Name = "Arial"
                ActiveDocument.Fields.Add Range:=newPP.Range, Type:=wdFieldEmpty, Text:="DOCVARIABLE  ndGeneratedStamp", preserveformatting:=False
    
        Next
    Next
    
    推荐文章