• 締切済み

エクセルのヘッダーでページ番号に枝番を付けるには

ヘッダーの横方向にページ番号、縦方向に-1、-2、-3と枝番を付けたいです。 現在はドキュワークスのページ番号機能を使用していますが、 ページを分離させ番号を振り、再度結合させるという手間がかかるので、 エクセルだけで完結できないかなと思い質問しました。 さらに条件として ・枝番は2または3をブックによって使い分けたい(同一ブック内は同じ枝番数です) ・横方向のページ番号は複数シートに渡って通し番号にしたい。  (できれば合計-1、合計-2、合計-3と文字の後ろにも枝番がつけられるといいですが、   難しければ合計だけはドキュワークスでやります) ・表示場所はヘッダー右上 ・できればフォントサイズも指定したいです 画像はセル=印刷範囲のイメージです。 分かる方がいらっしゃいましたら、ご教授願います。

みんなの回答

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

#1です。その後、関連事項を思い出したので追加しておきます。 ワードには、「セクション」ごとにヘッダーの設定を変えることはできます(仕組みが用意されています)。(ワードでは、知られた事項です) しかしエクセルでは、セクションという考えがなく、シートごとに、(印刷関係である)ヘッダーなどの設定を、変えることができないと思います。 参考 http://okwave.jp/qa/q3808545.html もし出来れば、質問の件の解決は、やや都合がよいと思うのですが。

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

「出来ない」と回答で言うのは、後で回答が出て、恥をかく危険を伴うが、1日経っても回答がないので,いろいろ考えたことを下記に記してみます。 ーー まず念頭にあるのは、ページ設定のヘッダーですが、 1.普通のエクセルの操作による設定では、ページ番号や日付などを単独か、その組み合わせは設定出来ても、情報・項目(ページ番号)の中身までは、思い通りにさせてくれず、不可能と思う。 各ページの印刷方向(順序)はZ型の方向で、本質問の画像のページ番号と一致している、と思う。 2.「まったく不可能」と「操作では不可能」の間にVBAを使うとできるいう、問題のケースも、少ないケースだがある。しかしVBAでも本件はこれも不可能のようです。 ブックレベルのBeforePrintというイベントがあるが、 (1)1ページ印刷の都度介入できるので「なく!」、 (2)印刷操作単位1回毎になら印刷前に介入(VBAを実行してくれる)できるしくみである。  それで「1(各)ページ!」を印刷する前に、本件の番号をプログラムを使ってもでも設定できない。 3.ほかに、質問の趣旨から離れる方法と思うが、 (1)本件の質問の番号だけを、あらかじめ白紙の用紙に印刷しておいて、その用紙にシートのデータを印刷する手もあると思うが、印刷紙とセル範囲の印刷とを合わせるのが煩わしいので、採用不可かと思う。 (2)データを壊さないセル(空白セル)を設けて(たとえば各ページ先頭に1行を挿入して、)望みの番号を、(シートの1セルに)、設定して、シート全体を1度に印刷する手もあるかと思う。しかし賛同は得られないだろうな。 (3)各ページの印刷部分の右上端に、テキストボックスを(データを隠さないように)配置し、その中のテキストを、思い通りの番号を入れて、オブジェクト(この場合テキストボックスのこと)とともに印刷する。オブジェクトを印刷する、エクセルの設定が必要かも。 しかしこれも賛同は得られるだろうかな。 ーー 4.他に、苦肉の策だが 縦に1シートあたり、3ページづつ分けて印刷する(3列分ずつ、上から回を分けて印刷する。)質問例では、1-1、2-1、3-1は1回、1-2,2-2、3-2は2回目。 その時、一回目に印刷する部分をシート上で範囲指定して、ヘッダーには、1回目(一番上の部分)では &[ページ番号]&”-1” として1単位(質問では横方向3ページ)の印刷を行う。VBAで言えばPrintOutを行う。質問例では1-1、2-1、3-1と3ページ出てくるはず。ページの印刷方向を、行方向(Z字型方向)に設定しておくこと。 行方向には、ページ番号印刷の自動+1増加機能を使っている。その後の「-1」の部分はこの各回操作内では固定されるが、回を分けて手動かVBAで、ー2、ー3をセットして3ページ印刷する。 続けて 2回目(一番上の部分)では、一回目に印刷する部分を範囲指定して、ヘッダーでは、 &[ページ番号]&"-2" のように設定して、印刷操作を行う。 ただし質問例の「2シート目」では、スタートページ番号は4にする必要がある。 以下、同様に続ける これら、質問例では6回(VBAではPrintOutの操作に当たる)は、VBAで繰り返し処理で、自動処理が可能と思う。 質問者がVBAができなければ、手作業で繰り返すしかないが。 ===== 参考 私のVBAメモ ・ページ区切り線を表示 Sub test03() ActiveSheet.DisplayAutomaticPageBreaks = True End Sub ・印刷ページブロックを捉える ・ページ区切り線をすべて抹消 Sub test08() With ActiveSheet .ResetAllPageBreaks End With End Sub ・ページ区切り線を指定複数セルに設定(指定セルの上辺と左端辺にひかれる) Sub test09() With ActiveSheet .ResetAllPageBreaks End With Set Rng = Union(Range("c5"), Range("f5"), Range("c10"), Range("f10")) For Each cl In Rng cl.Activate ActiveSheet.HPageBreaks.Add Before:=ActiveCell ActiveSheet.VPageBreaks.Add Before:=ActiveCell Next End Sub ・複数の指定セルにテキストボックスを配置 Sub test06() ActiveSheet.DrawingObjects.Delete Dim cl() cl = Array(0, 4, 6, 9) For i = 1 To 3 l = Cells(1, cl(i)).Left ActiveSheet.Shapes.AddTextbox msoTextOrientationHorizontal, l, 3, 60, 10 ActiveSheet.TextBoxes(i).Text = CStr(i) ActiveSheet.TextBoxes(i).Font.Size = 8 Next i End Sub

関連するQ&A