複数のWordファイルのフッターの処理(シェイプ等の入れ替え)に取り組んでおります。
処理の前に下記のコードで、既存のフッターを削除しているのですが、ページ番号
だけは、残したいと考えております。
Footer_clear1 ではフッターの全削除には成功しました。
ただし、ページ番号も削除されてしまいます。
Footer_clear2 はページ番号はShapesではないと考えましたが、ページ番号以外の
オブジェクトも残る等の問題があり、却下しました。
Footer_clear1をベースに『Typeが「ページ番号」であれば削除する』処理を加えれば良い
と考えているのですが、typeを調べて取得することはできるのでしょうか?
そのほか、良い方法があればご教授頂きたく、よろしくお願いいたします。
VBA
1Sub Footer_clear1() 2 Dim sec As Section 3 Dim hd_ft As HeaderFooter 4 For Each sec In ActiveDocument.Sections 5 For Each hd_ft In sec.Footers 6 hd_ft.Range.Delete 7 Next hd_ft 8 Next sec 9 End Sub
VBA
1Sub Footer_clear2() 2Dim sect As Section 3For Each sect In ActiveDocument.Sections 4 For Each ftr_shp In sect.Footers(wdHeaderFooterPrimary).Shapes 5 ftr_shp.Delete 6 Next ftr_shp 7Next sect 8End Sub
コードは見てませんが、全削除後に再度ノンブルのみ設定したほうがシンプルではないでしょうか。ノンブルがイレギュラーな振られ方をしているならば別ですが
コメントありがとうございます。ご指摘の通り、全削除後の再設定がシンプルで良いと思います。ただ、これもご推察の通り「振られ方」に統一性がありません。ページ番号の有無やスタイルについて、取得できる方法があればいいのですが。ご存知でしたらご指摘いただきたく思います。
ページ番号のスタイルは「PageNumbersオブジェクト」にある「numberstyleプロパティ」(https://msdn.microsoft.com/ja-jp/vba/word-vba/articles/pagenumbers-numberstyle-property-word)ではわかりませんでしょうか。有無はこのオブジェクトがheaderfooterに無いのではないかなーと思います。
コメントありがとうございます。PageNumbersオブジェクトで、既存のページ番号の取得やある程度の再現が可能となりました。ただ、既存のフッターを消してしまうので、手作業での「現在位置」への挿入をVBA化する方法を調べてみたいと思います。
「現在位置」がfooter自体と仮定して。PageSetup.FooterDistance プロパティ (https://msdn.microsoft.com/ja-jp/vba/word-vba/articles/pagesetup-footerdistance-property-word)で取得、設定できそうです。PageSetupオブジェクトも合わせてご参照ください。
ついでにググった手順を。「vba footer 位置」で検索 → 検索1件目で「(エクセルVBAで)ヘッダー・フッターを設定するPageSetupオブジェクトのプロパティ」と書かれていたので、たぶんWordも同じ → 「PageSetup word」で検索、のような感じです。

回答1件
あなたの回答
tips
プレビュー