プロが教えるわが家の防犯対策術!

ワード2007で,複数ファイルにページ連番をつけています。

ファイル1:1~15ページ
ファイル2:16~45ページ
 ・
 ・
 ・
ファイル10で,複数ファイルの目次を作成したのですが,ファイル2からの目次に表示されるページ数が,連番ではなく,1からカウントされてしまいます。これは,ファイル2からのページ数を手動ではなく,自動でページ番号が変わるようにフィールドコードを入力しているためです。

参考までに,フィールドコードは,概ね以下のように入力しています。
○複数ファイルの連番:ファイル2のフッターに採用しているフィールドコード
{ ={ page }+{ LINK Word.Document.12 "・・・\\ファイル1.docx" "OLE_LINK1" \a \t } }
※ファイル1に{ numpages }で,総ページ数を本文中に表示し,それをコピーしてファイル2にリンクテキスト貼付け(OEL_LINK1)。

○目次に採用しているフィールドコード
{ TOC \o "1-3" \u \h \z \N "1-1" }{ RD "ファイル1.docx" \f }{ RD "ファイル2.docx" \f }・・・

手動でなら,変更できるのですが・・・今後も,まだまだ編集・更新するので,可能なようであれば自動で更新されるようにしたいです。しかしながら,フィールドコード初心者で,どのように解決すれば良いのか,さっぱり分かりません。

詳しい方,教えて下さい!!!

A 回答 (3件)

ちょっと補足


PageNumbersを記載忘れ。
https://msdn.microsoft.com/ja-jp/library/office/ …
必要に応じてプロパティを設定することで、対応します。
一応、こちら↓も参考までに。
https://msdn.microsoft.com/ja-jp/library/office/ …

私はヘルプやWord関連のサイトにあるマクロを真似ているだけなので、
どこに問題があるのかを判断するのに個別で検証する方法で対応して
いるだけなので、紹介したマクロがうまく動かなくても、問題点を的確に
指摘できるスキルがありません。
質問者さんが、ある程度VBAを理解できるのであれば、いろいろ検証を
してみてはいかが。
    • good
    • 0
この回答へのお礼

ありがとうございました!!!
正直,私の今のスキルでは,すぐに対応できないことが良く分かりました。
あきらめて,今回は手動で複数ファイルのページ番号開始設定を行います。

ただ,今回のようなことが出来れば,例えば複数人で作業したワードファイルを本にまとめるなどのときにも,わざわざ一つのファイルにまとめて様式を整えなくても良いというような可能性を感じました。時間があるときに,勉強させて頂き,検証してみます!ありがとうございました!

お礼日時:2017/05/23 18:47

No.1でのマクロではできなかったのですね?


マクロは苦手なので、何が間違っているのか判断できません。
検証として、以下のマクロを新規文書でもよいので登録しておきます。

Sub ページ数を取得する()
MsgBox _
ActiveDocument.Range.Information(wdActiveEndAdjustedPageNumber)
End Sub

Sub 開始ページを指定()
 ActiveDocument.Sections(1).Headers(1) _
 .PageNumbers.StartingNumber = 5
End Sub

ファイル1でもファイル2でもよいので、アクティブにしてから
上記マクロを実行します。
総ページ数の確認及び、開始ページの指定をするものですから、この
マクロが動くようなら、最初のマクロも動くと思うのですが...
http://www.eurus.dti.ne.jp/~yoneyama/Word2007/fa …

ちなみにマクロで指定しているものは、以下のものです。
[開始ページ]の指定は、セクション1にあるwdHeaderFooterPrimaryを
指定するものです。
https://msdn.microsoft.com/ja-jp/library/office/ …
https://msdn.microsoft.com/ja-jp/library/office/ …
総ページは以下の情報を取得するものです。
wdActiveEndAdjustedPageNumber
https://msdn.microsoft.com/ja-jp/library/microso …

No.1のマクロを[ F8 ]キーなどでステップインしてローカルウィンドウの
変数の変化を確認してみてはいかが。
http://excelvba.pc-users.net/fol8/8_2.html
    • good
    • 0

以前の質問で、アドバイスしておけばよかったですね。


https://oshiete.goo.ne.jp/qa/9763225.html

目次の質問もしていたので気になっていたのですが、複数ファイルで
ページ番号をファイルごとに連番にするだけなら以前の方法で対応
できますが、目次で参照(RDフィールド)を使う場合は、無意味なもの
になります。

理由としては、RDフィールドとTOCフィールドで取得する目次項目の
ページ番号は、各ファイルのPAGEフィールドを参照するものだから。
PAGEフィールドに計算式を使って表示上のページ番号を変えても、
[ページ番号の書式設定]における[開始ページ]は同じだからです。

ですから、[ページ番号の書式設定]における[開始ページ]をファイル
ごとに前のファイルの総ページを足したものにする必要があるという
ことです。

設定手順

フッターに設定したフィールドコードを削除して、PAGEフィールドのみ
フッターに配置しておきます。

ファイル1からファイル10までのそれぞれに[ページ番号の書式設定]
として[開始ページ]を1にしておきます。
(事前に開始ページと指定するようにしておく必要があるため)

自動ということは無理ですが、目次ファイルをマクロ付きファイルでの
保存をして、目次ファイルに以下のマクロを登録します。
(マクロは不得意なため、初心者的なマクロです)

Sub ページ番号連番()
 Dim fname As String
 Dim i As Integer
 Dim i_Pnum As Integer
 Dim iPage As Integer

 iPage = 1

' ファイル名が同じ名前+連番の場合でファイル数が10の場合
 For i = 1 To 10

' 目次ファイルが同じフォルダにない場合
' fname = "フルパス" & "ファイル" & i & ".docx"

' 目次ファイルが同じフォルダの場合
fname = "ファイル" & i & ".docx"

 Documents.Open FileName:=fname

 With ActiveDocument
  .Sections(1).Footers(1).PageNumbers.StartingNumber = iPage
  i_Pnum = ActiveDocument.Range.Information(wdActiveEndAdjustedPageNumber)
  iPage = i_Pnum + 1
  .Close

 End With
Next

End Sub

これで、保存してあるファイル1を開き、総ページを取得します。
ファイル1を閉じ、取得した総ページ数+1でファイル2の開始ページ
を変更して、上書きの確認後に次のファイルを設定します。
すべてのファイルを実行後、手動で[目次の更新]をします。
ページ番号が連番になっていることを確認します。
    • good
    • 0
この回答へのお礼

enunokokoro さん,早々のご回答およびマクロまで提示して頂き,ありがとうございました!!
ワードのスペシャリストですね!感服致します!
ご回答から,無理難題な質問をしてしまったことが,良く分かりました(^^;)

ただ,もう少し甘えさせて頂くと,上記のマクロではページ数が変わりませんでした(私のやり方がまずかったのかもしれませんが・・・)
○ファイル10を目次とした場合,ファイル1~9を指定。ファイル1とファイル2,ファイル2とファイル3・・・全てのファイルが,それぞれ連番になりませんでした。
○ファイル指定は,マイドキュメント内を探すようなので,フルパスの方法を選択し,設定する必要がありました。

何か設定が悪かったでしょうか?
※”開始ページを1にする”は,全てのファイルで確認致しました。

お礼日時:2017/05/23 15:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!