我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
答案 0 :(得分:0)
您可能发生了错误,因为您需要提供部分编号。试试这个:
wdHeaderFooterPrimary
根据您的文档结构,您可能需要在#(1)部分和wdHeaderFooterPrimary
与{{1}}之间使用#。
希望有所帮助