I previously asked a question未回答です。私はここを復活させたいと思います。おそらくもう少し簡単です。うまくいけば、その質問に答えることができます。値が範囲外に入るワードフッターVBA
500を超えるドキュメントのフッターで書式を変更する必要があり、手作業では行いたくありません。 空のドキュメントにマクロを記録し、それをクリーンアップし、選択プロパティを使用しないように修正しました。そのコードブロックをコピーして既存のコードに貼り付け、変更する必要のある文書で試したところ、フィールドを挿入できなくなり、「4608値が範囲外です」というエラーが発生しました。私の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
あなたは 'を設定しようとすることができRAN1 = doc.StoryRanges(wdPrimaryFooterStoryは)' – Slai
@Slaiは、コレクションの要求されたメンバーは、VBAの – Jodi