• ベストアンサー

エクセル表の自動ページ印刷

エクセル表を縦方向、横方向とも複数ページに印刷するとき自動ページで縦方向の印刷には1-1~1-10(縦方向に10ページある場合)次の列の印刷には2-1~2-10と表示したいのですが良い方法がありますでしょうか?。頭の1-、2-はタイトル行のセルに打ち込んでおけば出来るのですが、後のページを自動にすると2列めからは11番から始まります。2列目の一番上のページから又1~10と表示したいのです。説明がわかりづらいとおもいますがよろしくお願いします。

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

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

なかなか回答が出ないので、私も操作による設定や勿論関数式では出来ないと思います。それでVBAで出来そうという回答例を上げます。ご参考に。 Sub test01() m = 1: n = 1 'ページ番号の初期設定 Worksheets("sheet1").Activate For n = 1 To 2 '縦2枚印刷 For m = 1 To 3 '横3枚印刷 With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = n & "-" & m .RightFooter = "" .PrintHeadings = False .PrintGridlines = False .PrintComments = xlPrintNoComments .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlOverThenDown .BlackAndWhite = False .Zoom = 100 End With Worksheets("sheet1"). _ Range(Cells((n - 1) * 56 + 1, (m - 1) * 9 + 1), Cells(n * 56, m * 9)). _ PrintOut Copies:=1, Collate:=True Next m Next n End Sub (結果) 私はテストでA-U列、1-71行の表を作り、A4用紙に印刷しました。フータに1-1,1-2,1-3,2-1,2-2,2-3が出て来ました。 (説明) (1)m横ページ数    n縦ページ数を表す (2)mは3まで繰り返していますが、今回はU列までの表だったものですから、目視で3枚目までといれました。 印刷プレビューでA-I、JーR、S以後になることが 判ったので、それを取り入れています。 最終列を捉えられるので、1枚が何列分はいるか判れば 横何枚になるかは計算できますが、今回は複雑にしないため略しています。 またmは2まで繰り返していますが、縦は1-56、57-以後になるのでそれも取り入れています。 最終行も捉えられるので、1枚が行分はいるか判れば 縦何枚になるかは計算できますが、今回は複雑にしないため略しています。 (2)フッタにn-mの形でページ数印刷しています。 .CenterFooter = n & "-" & m (3)Z型に印刷するため印刷方向を.Order = xlOverThenDownにしています。 (4)全体的に、印刷のマクロに記録を取れば、上記と 似たものが出ますので参考になります。一部削除したのと (2)と(3)と(5)の部分を改変しています。 (5)(4)のようにSheet全体を印刷でなく、 Sheet1の印刷する範囲を指定してRange(Cells((n - 1) * 56 + 1, (m - 1) * 9 + 1), Cells(n * 56, m * 9)). 印刷しています。PrintOut Copies:=1, Collate:=True

kogorou100
質問者

お礼

どうも有り難うございます。正月休みに回答頂いた内容で試してみます。私にはレベルが高すぎて無理かもしれませんが頑張ってみます。

関連するQ&A