Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6040 / 13646 ツリー ←次へ | 前へ→

【47507】改ページプレビューの位置が指定した行と異なる GHQ 07/3/12(月) 20:11 質問[未読]
【47511】Re:改ページプレビューの位置が指定した行... ichinose 07/3/12(月) 21:48 発言[未読]
【47534】Re:改ページプレビューの位置が指定した行... GHQ 07/3/13(火) 18:57 お礼[未読]

【47507】改ページプレビューの位置が指定した行と...
質問  GHQ E-MAIL  - 07/3/12(月) 20:11 -

引用なし
パスワード
   以下の要領で表を作っています。
・明細数:64
・1ページあたりの明細数:最初のページのみ12、以後は13
・1明細あたりの行数:6
・用紙サイズ:A3
・縮小率:37%
・行タイトル:1〜12行目
・印刷範囲:AY1からCU406まで

最初のページだけ明細数が違うのは、最初のページに合計欄などを設けているためです。
印刷範囲がAYからなのは、ひとつのシートに異なる表が存在するためです。
この条件でプレビューするところまでをマクロにするため、以下の通りコーディングしました。

'印刷範囲指定
  Range("AY1:CU621").Select
  ActiveSheet.PageSetup.PrintArea = "$AY$1:$CU$406"
  ActiveWindow.View = xlPageBreakPreview
  With ActiveSheet.PageSetup
    .PrintTitleRows = "$1:$12"
    .PrintTitleColumns = ""
  End With
  
'ページ設定
  ActiveSheet.PageSetup.PrintArea = "$AY$1:$CU$406"
  With ActiveSheet.PageSetup
    .LeftHeader = ""
    .CenterHeader = ""
    .RightHeader = ""
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
    .LeftMargin = Application.InchesToPoints(0.393700787401575)
    .RightMargin = Application.InchesToPoints(0.15748031496063)
    .TopMargin = Application.InchesToPoints(0.490551181102362)
    .BottomMargin = Application.InchesToPoints(0.31496062992126)
    .HeaderMargin = Application.InchesToPoints(0.166850393700787)
    .FooterMargin = Application.InchesToPoints(0.236220472440945)
    .PrintHeadings = False
    .PrintGridlines = False
    .PrintComments = xlPrintNoComments
    .PrintQuality = 600
    .CenterHorizontally = False
    .CenterVertically = False
    .Orientation = xlLandscape
    .Draft = False
    .PaperSize = xlPaperA3
    .FirstPageNumber = xlAutomatic
    .Order = xlDownThenOver
    .BlackAndWhite = False
    .Zoom = 37
    .PrintErrors = xlPrintErrorsDisplayed
  End With

'改ページ設定 
  Set ActiveSheet.HPageBreaks(1).Location = Range("AY94")
  Set ActiveSheet.HPageBreaks(2).Location = Range("AY172")
  Set ActiveSheet.HPageBreaks(3).Location = Range("AY250")
  Set ActiveSheet.HPageBreaks(4).Location = Range("AY328")
  ActiveWindow.SelectedSheets.PrintPreview

これなら5ページ目までプレビューされるはずですが、実際は6ページできてしまいます。
しかも、改ページプレビューの青線が入る行は、
2ページ:94(仕様通り)
3ページ:172(仕様通り)
4ページ:250(仕様通り)
5ページ:328(仕様通り)
6ページ:340
となるので、最後の5ページ目が2明細しか印字せずに勝手に改ページ(?)してしまっています。

長ったらしい記述で恐縮ですが、おかしな点があればご指摘下さると幸いです。

【47511】Re:改ページプレビューの位置が指定した...
発言  ichinose  - 07/3/12(月) 21:48 -

引用なし
パスワード
   こんばんは。
Excelの印刷は大変ですね!!、不得意だから・・・。

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=16439;id=excel

これの変更で試してみて下さい。

【47534】Re:改ページプレビューの位置が指定した...
お礼  GHQ E-MAIL  - 07/3/13(火) 18:57 -

引用なし
パスワード
   ▼ichinose さん:

>www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=16439;id=excel
>
>これの変更で試してみて下さい。

書いてあった質問者の方のようなデータ挿入による範囲変更はないので、
VDRGOFFとHDRGOFFは使わずにすみました。
(所定のセル以外編集不許可のため)
一つのシートに複数の異なる表があり、印刷は表単位に別々のため、
pr_setteiを表ごとに作ることで、無事解決しました。
本当にありがとうございました。

6040 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free