Word页脚VBA

时间:2017-03-01 00:12:50

标签: vba ms-word

previously asked a question未得到答复。我想在这里重振一下,也许有点简单,希望我可以回答这个问题。

我需要更改超过500个文档的页脚格式,并且不想手动执行。 我在一个空文档中记录了一个宏,修改它以清理它并且不使用选择属性:它工作得非常好。一旦我将该代码块复制/粘贴到我现有的代码中,并且我在需要更改的文档上尝试了它,我就再也无法插入字段了,而且我收到了#34; 4608超出范围的值#34 ;错误。如果我将ran1变量标注为Range,则会在范围的定义中出现类型不匹配。 我想帮助将字段插入页脚中。

以下是我目前正在使用的代码:

Sub EnterFieldInFooter()

Dim wor As Object
Dim fso As Object
Dim fol As Object
Dim fil As Object
Dim doc As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set fol = fso.GetFolder("M:\test")

Dim ran1 As Object

i = 3

Set wor = CreateObject("word.application")

For Each fil In fol.Files

    If Right(fil.Name, 4) = ".doc" Or Right(fil.Name, 5) = ".docx" And Left(fil.Name, 2) <> "~$" Then
        ' open the document
        Set doc = wor.documents.Open(Filename:=fil.Path)

        Set ran1= doc.sections.first.footers(1).Range 'footer range

        ' Set qualifying statement
        ran1.Text = "This is an uncontrolled document when printed or saved. " & _
                    "See online database for most recent version."
        ' Enter the last saved date
        ran1.InsertAfter (vbCrLf & "Save Date: ")
        ran1.Collapse Direction:=wdCollapseEnd
        Set ran1 = doc.sections.first.footers(1).Range
        ran1.Fields.Add Range:=ran1, Type:=wdFieldEmpty, Text:="SAVEDATE \@ ""yyyy/MM/dd""", PreserveFormatting:=True
        ' Enter the last printed date
        Set ran1 = doc.sections.first.footers(1).Range
        ran1.InsertAfter (vbTab & "Print Date: ")
        ran1.Collapse Direction:=wdCollapseEnd
        ran1.Fields.Add Range:=ran1, Type:=wdFieldEmpty, Text:="PRINTDATE \@ ""yyyy/MM/dd""", PreserveFormatting:=True

        ' Save updated file
        pat = "M:\test1" & "\" & fil.name
        doc.saveas pat

    End If

Next

End Sub

1 个答案:

答案 0 :(得分:0)

您可能发生了错误,因为您需要提供部分编号。试试这个:

wdHeaderFooterPrimary

根据您的文档结构,您可能需要在#(1)部分和wdHeaderFooterPrimary与{{1}}之间使用#。

希望有所帮助