• ベストアンサー

【Excel】印刷範囲の設定

Excel2003を使用しています。 全5ページの書式があり、そのときそのときで1ページで終わったり、3ページで終わったりするのですが、この印刷範囲を自動で設定することは可能でしょうか? もし可能であれば、それぞれのページの右上にページ数が数式で入力されているセルがあるので、これを利用できないかと考えています。 このセルは『頁1/1』、『頁1/2』というふうに表示されていますので、例えば1ページ目が『頁1/2』と表示されていたら、印刷範囲を2ページに、『頁1/5』と表示されていたら、印刷範囲を5ページに設定できないかなと思っています。 よろしくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.4

何度もすみません。領域の指定がどうもうまくいかないようですね。 各ページの行数が決まっているということなので、行数から計算して印刷範囲と改ページの位置を設定するように作り直しました。 これでいかがでしょうか? Sub 改ページ設定()   Dim TotalPage As Integer   Dim CurrentPage As Integer   With ActiveSheet     '総ページ数を取得     TotalPage = CInt(Right(.Range("Z3").Text, 1))     If TotalPage < 1 Or TotalPage > 5 Then       MsgBox ("総ページ数が取得できません")       Exit Sub     End If          '最初に全ての改ページを削除     .ResetAllPageBreaks          '印刷エリアを設定     .PageSetup.PrintArea = .Range("P1:AA236").Resize(TotalPage * 47 + 1).Address          '改ページを設定     For CurrentPage = 2 To TotalPage       .HPageBreaks.Add Before:=.Range("P" & ((CurrentPage - 1) * 47 + 2))     Next   End With End Sub

rx-z5815
質問者

お礼

ham_kamo さん、こんばんは。 何度も恐れ入ります。。。 新しく作り直していただいたコードでうまくいきました! 最後まで親切に教えていただき、ありがとうございました。

その他の回答 (4)

noname#52504
noname#52504
回答No.5

横からすみません。 ちょっと邪道な気もしますが、 名前の定義で、 Print_Area: =INDIRECT("$P$1:$AA$"&(RIGHT(【シート名】!$Z$3,1)*47+1)) とするのはダメでしょうか? 改ページプレビュー画面の挙動が少し変(遅れる)ですが、 印刷自体はうまくいくようです。 Excel2000,2003で動作確認。

rx-z5815
質問者

お礼

deus_ex_machinaさん、こんばんは。 回答ありがとうございます。 教えていただいた名前の定義でもうまくいきました。 改ページプレビュー画面の挙動が少し変(遅れる)とのことでしたが、こちらで確認した限りでは、そのような感じはありませんでした。 名前の定義を使って、印刷範囲の設定をしたのは初めてでしたので、大変勉強になりました。 ありがとうございました!

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.2です。補足拝見しました。 P1から表がはじまっているのですね。 マクロではA1を含む表領域を指定していたので、うまくいかなかったのだと思います。 印刷する表の領域を確実に取得するために、 '表全体の領域を取得 Set R = ActiveSheet.Range("A1").CurrentRegion の箇所を、 '表全体の領域を取得 Set R = ActiveSheet.Range("Z3").CurrentRegion に変えてみてください。 お書きになっているように各ページの行数が決まっているのなら、もう少し簡単なマクロになると思いますが、とりあえず上記の変更で試していただけますか?

rx-z5815
質問者

お礼

再度の回答ありがとうございます。 おっしゃるとおりに 表全体の領域を取得 Set R = ActiveSheet.Range("A1").CurrentRegion の箇所を、 '表全体の領域を取得 Set R = ActiveSheet.Range("Z3").CurrentRegion に変えてみたところ、ダイアログは表示されることなく、マクロが実行されましたが、改ページの設定がうまくいきませんでした。 Z3セルが『頁1/2』の状態でマクロを実行したのですが、S2:Z3が印刷範囲に設定されました。この場合、2ページまでなので、P1:AA95が印刷範囲に設定されるようにしたいのですが。。。 何度も申し訳ありません(^_^;)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

マクロを組んでみました。 Alt+F11でVBAの画面を立ち上げ、「挿入」>「標準モジュール」を選択して、右側の画面に下のマクロを貼り付けてください。 Sub 改ページ設定()   Dim PageCell As Range   Dim PrevPageCell As Range   Dim R As Range   Dim TotalPage As Integer   Dim CurrentPage As Integer      '最初に全ての改ページを削除   ActiveSheet.ResetAllPageBreaks      '表全体の領域を取得   Set R = ActiveSheet.Range("A1").CurrentRegion      '最初の「頁」セルを検索し、総ページ数を取得   Set PageCell = R.Find("頁")   If PageCell Is Nothing Then     MsgBox ("総ページ数が取得できません")     Exit Sub   End If   TotalPage = CInt(Right(PageCell.Text, 1))      '改ページを設定   Set PrevPageCell = PageCell   For CurrentPage = 2 To TotalPage     Set PageCell = R.FindNext(PrevPageCell)     If PageCell Is Nothing Then       Exit Sub     End If     ActiveSheet.HPageBreaks.Add Before:=PageCell     Set PrevPageCell = PageCell   Next      '印刷エリアを設定   If TotalPage < 5 Then     Set PageCell = R.FindNext(PrevPageCell)     ActiveSheet.PageSetup.PrintArea = R.Resize(PageCell.Row - 1).Address   Else     ActiveSheet.PageSetup.PrintArea = R.Address   End If End Sub 各シートの入力が終わったら、Alt+F8からこのマクロを実行すれば、そのシートの印刷範囲を設定します。 ご希望の動作と異なるようでしたら補足願います。

rx-z5815
質問者

補足

回答ありがとうございます。 記載していただいたコードをコピペして実行したところ、『総ページ数が取得できません』とダイアログが出てきましたので、少しいじってみたのですが、うまくいかず。。。 何点が補足させていただきますので、それでうまくいくようでしたら、再度教えていただけると嬉しいです。  1. 『頁1/1』(最初の頁セル)はZ3セルで、数式は    [=IF(C21=0,"頁1/1",IF(C26=0,"頁1/2",IF(C31=0,"頁1/3",IF(C36=0,"頁1/4","頁1/5"))))]    と入力されています。  2. 表の全体の領域は、P1:AA236です。  3. 1ページ目  48行目まで    2ページ目  95行目まで    3ページ目 142行目まで    4ページ目 189行目まで    5ページ目 236行目まで となっています。よろしくお願いします<(_ _)>

  • plqa771
  • ベストアンサー率27% (3/11)
回答No.1

自動設定に関してはわかりませんが、 ファイル(F)→印刷プレビューと選択し プレビュー画面で上部にある【改ページプレビュー】を選択すると シート上に青い線でページごとの範囲が表示されるので、その線をドラッグすれば任意の範囲を指定して印刷する事ができます。 あとは、印刷倍率を調整すれば大丈夫だと思います。

rx-z5815
質問者

お礼

回答ありがとうございます。 説明不足だったようで、申し訳ありません。。。 この改ページを自動で設定したいのです。現在は3ページで終わったら、その範囲までドラッグして設定しています。 複数のシートを作業グループで一気に印刷したいのですが、印刷範囲が全てのシートで同じとは限りませんので、この書式への入力が終了したら、自動で設定されればと思い、質問させていただきました。

関連するQ&A

  • Excel2007で印刷範囲を可変にする方法

    Excel2007で印刷範囲を可変にする方法について教えてください。 可能であればマクロを組まずに実現したいです。 ただし、簡単なマクロで可能であれば参考までに教えてください。 ■やりたいこと ・1~4ページまで共通書式のExcelフォーマットがある。 ・各ページの特定のセル(列は共通)に値が入力されたら、そのセルを含むページまで印刷したい。  例1)1ページのB3に値が入力された場合、印刷範囲を$A$1:$I$32とする。  例2)2ページのB35に値が入力された場合、印刷範囲を$A$1:$I$64とする。  例3)3ページのB67に値が入力された場合、印刷範囲を$A$1:$I$96とする。  例4)4ページのB99に値が入力された場合、印刷範囲を$A$1:$I$128とする。 ■補足 ・Bの各行(B35,B67など)に値が入力された場合に、IF文のネストを使って、「$A$1:$I$64」,「$A$1:$I$96」などを返すExcel関数は設定しましたが、これから先の印刷設定がわかりません。 詳しい方、是非ともよろしくお願いします。

  • 【Excel】マクロで印刷範囲の設定

    Excel2003を使用しています。 マクロで印刷範囲を設定するコードを書きました。ページを追加するマクロを実行したときに一緒に実行するようにしているのですが、コードで指定している範囲外にデータがあるせいか、その列まで印刷範囲に設定されてしまいます。このデータは印刷範囲には入れたくないのですが、どうしたらいいでしょうか? ちなみに、印刷範囲部分のコードは  .PageSetup.PrintArea = Range(Cells(1, 1), Cells(j, 24)) Y1セルとZ1セルにデータが入力されています。マクロを実行すると、印刷範囲がA1:Zjに設定されます。印刷範囲はX列までに設定したいのですが、可能でしょうか?よろしくお願いします。

  • Excelのページレイアウト>印刷範囲の設定

    Excelで、ページレイアウトから印刷範囲、印刷範囲の設定と進むとシート内に点線で印刷出来る範囲を示すことができると思います。それを設定する際、左上にある◢を押して全選択をしないといけませんが、1発でできません。必ずどこか一つだけセルを選択して「印刷範囲として1つのセルだけが選択されています」というエラーを出さないと点線が表示されません。 だから毎回、 「1つのセルだけを選択して設定し、エラーを出す」→「左上の◢を押して全選択してから設定」という謎の手順を踏まないといけません。 これって長年のバグなんですか?Excel2013でもExcel2019でも同じ感じです。それとも私が悪いんですか? 皆さんお聞かせください

  • 印刷範囲の設定方法ですが、現在Excel2007を使っています。

    印刷範囲の設定方法ですが、現在Excel2007を使っています。 印刷範囲の設定で印刷プレビューからページ設定のダイアログボックスを開いてシートタブから印刷範囲を設定しようとすると、グレイアウトになって設定ができません。 ページレイアウトタブからページ設定のダイアログボックスを開くと、印刷範囲が設定できます。 Excel2003では印刷プレビューを開いて設定出来ていたと思うんですが。何か違いがあるのでしょうか

  • Excel2000でのセルの書式設定

    Excel2000でセルに年月日を入力すると、セルを日付に書式設定していないのに、日付に設定され、そのあと標準にもどしてもシリアル値で表現されてしまいます。 セルの書式設定が自動でなされないようにする方法はあるのでしょうか? 'を使えば標準のままでいることは、知っているのですが、書式設定が変わらないほうが便利なのですが…。

  • 印刷範囲設定を自動的に元に戻す方法は?

    Excel 2002 で作成したブックAの Sheet1 には[印刷範囲の設定]しており、長年印刷して来ました。必要な場合は、[ファイル]→[印刷範囲]を実行して表示される[印刷範囲の設定]と[印刷範囲のクリア]も使っておりました。 最近は、ブックAを Excel 2013 に読込み、ブックA.xls をブックA.xlsx に保存しなおして、従来どおり印刷が出来ております。 [ページレイアウト]→[ページ設定]→[印刷範囲]を辿ると、馴染みの[印刷範囲の設定]と[印刷範囲のクリア]のメニューが表示されます。 ところが最近気付いたことですが、何かの弾み(多分、印刷範囲外のセル範囲を選択をしたとき)に馴染みの2項目の他に[印刷範囲に追加]も表示されることがあります。この機能は Excel 2002 では存在しなかったと思うのですが、如何でしょうか? それから、印刷範囲設定済みのシート内の他の特定範囲だけを1回だけ印刷した後で、印刷範囲の再設定をすることなく、印刷範囲を元に戻しておきたいのですが、此れは可能でしょうか?YESならその手順を教えてください。

  • エクセル(印刷範囲設定)について

    1ページのいくつかの表があります。 今まで、必要な表を印刷範囲設定で、印刷していましたが、印刷する表が多いと時間も掛かりますし面倒な面もあります。 どこかのセルに何かを入力するか、ワンクリックで、表ごとに決められた印刷範囲の設定を変えることができますでしょうか。 何か良い方法がありましたら教えていただければと思います。 よろしくお願いします。

  • Excelの書式設定

    Excel2002の書式設定についてお尋ねします。 セルの書式設定の「表示形式」で「ユーザー定義」についてですが、 種類のところに「;;;」を入力するとデータが消えることを知りました。 この「;;;」の意味はなんですか? 表示を消すという意味ですか?数式バーには入力したものは残っているのですがどういう意味なのでしょうか?。

  • Excel24時間以上表示しているセル対象のパーセント計算方法

    セルの書式設定で時間表示を[hh]:mm設定で24時間以上の表示を可能にしています。 そのセルに対して現在「44:00」と表示しているのですが、その44時間が35時間に対して何パーセントであるのか数式入力しようとしています。 通常「44時間が35時間に対して何パーセントであるのか」という計算の求め方は 44÷35×100= で答えは出せると思います。 そこで同じように数式に =(範囲セル/35)*100 と入力し、セルの書式設定を「パーセント」(小数第二位まで表示)に設定にしたのですが計算結果が正しくありません。 本来なら125.71%という計算結果になるはずですが、セルに表示されているのは523.81%と表示されてしまいます。 なぜこのような計算結果になるのかサッパリ分かりません。 計算式はあってると思うのですが・・・ もし数式が間違っているのならば・・・と考えましたが上記で入力した計算式以外にパーセントを求める計算式を知りません。 ここ1ヶ月ほどネット検索で調べまくったのですが望むページは見つかりませんでした。 ・上記の数式入力で計算結果が間違っているのはなぜか? ・どんな内容の数式を入力したらただしい結果が表示されるのか? この2点を教えてください。

  • 印刷範囲の設定で教えてください。

    再三再四で申し訳ございません。 マクロで印刷範囲設定は ActiveSheet.PageSetup.PrintArea = "$B$1:$H65" と範囲を固定するのが一般的と思うのですが、 印刷範囲が利用者毎に相違するため 開始セル値を A8 セルに 最終セル達を A10 に置く形で 印刷範囲を任意変更可能にしたい場合には セル値で印刷範囲設定する方法を お教えくださいますよう 御願いいたします。

専門家に質問してみよう