• ベストアンサー

複数のwordファイルを連番のページ番号を付けて印刷

wordで章ごとに分けて複数の文書ファイルを作成しました. 今はまだ章構成が未定で,どのファイルが何章になるのか順序が確定していません. 各ファイルのページ数や章構成の変更を気にせずに連番のページ番号を振って印刷するために,各文書ファイルとは別に文書ファイル名を列挙したファイルをつくり,例えばその内容が「file01.doc, file02.doc, file03.doc, ...」であればその順序どおりに連番のページ番号で印刷でき、章構成が変わったときはファイル名の並びを替えるだけで簡単に済ませられればと考えているのですが,そのようなことは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

[グループ文書]で作成してはいかがでしょうか。 http://office.microsoft.com/ja-jp/word/CH060829811041.aspx Wordのバージョンの違いで説明方法も多少違いますので、今後質問する ときにはできるだけバージョン情報も載せてください。今回はWord2003 が回答しやすい(情報を集めやすい)ので、URL先もWord2003です。 Word2000の場合、こちら↓のバグがあるので注意してください。 http://support.microsoft.com/default.aspx?scid=kb;ja;JP242372

KettaMachine
質問者

お礼

ご回答ありがとうございます.Word2003ですのでピッタリの情報でした! 私のイメージしていた機能と似ていると思い早速試してみたのですが,使ったことのない人でも直感的に操作できるようなものではなさそうですね. こちらのサイトで質問検索してみると,この機能の評判はあまり芳しくなさそうですし…(汗) 既存の文書を1つだけサブ文書に追加して印刷をしてみたところ,一部の表が崩れて出力されてしまいました(大汗)

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

基本的にファイル(ワードの場合文書、Doc)が違えば別世界で、メニューやツールバー操作などで始まるワードの操作で、ページ番号だけにしろ、連携をしていくのは、そういう操作は存在しないと思います。 ただVBAで印刷する場合 (1)あるフォルダ内の文書(.doc)ファイルの中で、指定する名前のものだけに付いて (2)プログラム主導で、印刷する (3)その直前に、プログラムでフーターなどのページ番号を、変数で計算したもの(今までの印刷済みのページ数の累積して)を使い、セットすることは可能と思います。 ーー エクセルの例がWEBにあると思うので、近いころまではそれを利用できます。 http://itpro.nikkeibp.co.jp/article/COLUMN/20060120/227645/ を少し改変させていただいて 下記XXXXの部分はユーザー名でおき変えること Sub MakeFileList() Set FS = CreateObject("Scripting.FileSystemObject") Set Fol = FS.GetFolder("C:\Documents and Settings\XXX\My Documents\") Set Fil = Fol.Files ThisWorkbook.Sheets("Sheet1").UsedRange.Delete '見出しを付ける ThisWorkbook.Sheets(1).Range("B2") = "ファイル名" ThisWorkbook.Sheets(1).Range("C2") = "ファイル種別" ThisWorkbook.Sheets(1).Range("D2") = "最終更新日" ThisWorkbook.Sheets(1).Range("E2") = "説明" ThisWorkbook.Sheets(1).Range("B2:E2").Interior.Color = RGB(0, 0, 0) ThisWorkbook.Sheets(1).Range("B2:E2").Font.Color = RGB(255, 255, 255) ThisWorkbook.Sheets(1).Range("B2:Es2").HorizontalAlignment = xlCenter i = 3 For Each Fx In Fil 'ファイル名 sFile = Fx.Name If Right(sFile, 4) = ".doc" Then MsgBox sFile 'ファイル名の書き出し ThisWorkbook.Sheets(1).Cells(i, 2) = sFile 'ファイル種別 sFType = Fx.Type '最終更新日時の書き出し ThisWorkbook.Sheets(1).Cells(i, 3) = sFType '最終更新日 sLMod = Fx.DateLastModified ThisWorkbook.Sheets(1).Cells(i, 4) = sLMod i = i + 1 End If Next End Sub これでエクセルのセルに文書名ガでます。 これでエクセルに書き出していますが、具体的なイメージがつかめると思います。 ーーーー 後は、上記文書名の中で、必要な文書(名)を絞り印刷対象にするやり方ですが、VBAをやる人には平凡な事項です。 Arrayででも使って、プログラムの中に文書名を持って、毎回その中に(上記で言えばSFileが)Array内に該当があるか調べる。 ーー 印刷はワードでのマクロの記録をとれば、PageSetUpでページ数セットのコードが知れて、印刷操作で文書印刷のコードが知れる。 その際は、当然上記のコードの中のエクセル関係の業は全て削除します。 以上で必要な要素技術はそろったと思う。 -- あるいは、最後に思いついたが、指定文書名をプログラムのArrayにもって、1つずつ順にOpenして印刷するほうが、印刷順序を指導権を握れるので良いかもしれない。 その際変数に印刷ページは http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1412167539 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=434;id=word を参考に。

KettaMachine
質問者

お礼

ご回答ありがとうございます. 残念ながらまだマクロはよくわかりませんので今回は「グループ文書」の機能を利用して,うまくいかなかったらマクロの利用を検討してみます.

関連するQ&A