>エクセルにて、1ファイル内に収まっている複数のシートにページ番号を通しで振るには、
>どのような設定をすればよろしいのでしょうか。・・・実際は100シートぐらいページを設定したい。
実現するには、特に設定は必要ありません。操作手順だけの問題でしょう。
印刷したいシートには全てページ番号が設定されているとします。
印刷する時、印刷したい一番左のシートタブをクリック、次にShiftキーを押しながら最後のシートのタブをクリックして印刷したいシートを全て選択します。(Ctrlキーを使う方法もあります)
このように選択した状態で印刷(またはプレビュー)すれば、全シートで通しのページ番号になります。
上のように、全シートを印刷する場合は簡単にできます。シートを部分的に印刷しなくてはならない時が問題でしょう。
例えば、何か問題があって、2つ目のシートだけを開始を4ページ目として印刷しなくてはいけない場合は、
プレビュー→設定でページ設定ダイアログのフッタ(またはヘッタ)の編集ボタンを押して
&[ページ番号] ページ を &[ページ番号]+3 ページ
のように編集して印刷します。印刷が終わったら設定を元に戻しておきます。
この辺を自動化するにはマクロを作る必要があるでしょう。下のようにして頁総数が把握できれば簡単ですが、どのような操作で印刷するか分からないと書けそうにありませんね。5番目と15番目などを任意に選んで印刷するようにしたいとか・・・
>更にできるならば、その目次を作りたいのですが、それも判れば教えて下さい。
マクロを作って見ました。『目次作りたい』だけでどんな内容かわかりませんが・・・
目次といっても、シート名と頁数を出しHyperlinksを設定しているだけです。目次用シートを挿入し、シート名『MENU』を付けます。
内部で使っているHPageBreaksは不具合があるという話もあります。Excel95のExcel4Macroが使えるかどうか分からないのでこちらを使ってみました。(Excel2000で稼動確認しましたが自信なしです)
ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。
出てきたコードウインドウに下記マクロをコピーして貼り付けます。
ここから。printMenuMakeを実行すればシートMENUに頁数を書き出すはずです。
↓
Sub printMenuMake()
Dim ws As Worksheet 'シート
Dim wsMenu As Worksheet '印刷メニューを書くシート
Dim hpBreak As Integer '横の改ページ数
Dim vpBreak As Integer '縦の改ページ数
Dim prtPage As Integer '印刷ページ数
Dim rgMenuTop As Range 'シート内容を書き出す位置
Dim rw As Integer '行カウンタ
Set wsMenu = Worksheets("MENU")
Set rgMenuTop = wsMenu.Range("C5")
rgMenuTop.Range("A1:D500").ClearContents
For Each ws In Worksheets
If ws.Name <> "MENU" Then
If ws.UsedRange.Address <> "$A$1" Then
hpBreak = ws.HPageBreaks.Count '横の改ページ数取得
vpBreak = ws.VPageBreaks.Count '縦の改ページ数取得
If vpBreak = 0 Then
prtPage = hpBreak + 1
Else
hpBreak = hpBreak + 1
vpBreak = vpBreak + 1
prtPage = hpBreak * vpBreak
End If
With rgMenuTop
.Offset(rw, 0) = rw + 1
.Offset(rw, 1).Select
wsMenu.Hyperlinks.Add Anchor:=Selection, Address:="", _
SubAddress:="'" & ws.Name & "'" & "!A1", TextToDisplay:=ws.Name
.Offset(rw, 2) = prtPage
.Offset(rw, 3) = "ページ"
rw = rw + 1
End With
End If
End If
Next
End Sub
お礼
詳しい回答ありがとうございます。 目次のマクロは、感動ものです。 ページ設定は、簡単にできるものなのですね。 目次の方は、多ページの場合かなり助かりそうです。 早速試してみたいと思います。