ページを印刷する時に、印刷ページや枚数を選ぶ作業って面倒だと思いませんか?
エクセルで印刷するに毎回【ファイル】➡【印刷】を選ぶところから始まり、ページ・枚数まで何行程もあるのですが、PrintOutメソッドを使えば、ワンクリックで印刷ができるので使い方をご紹介します。
PrintOutメソッド
Excel-VBAで印刷をコントロールするのがPrintOutメソッドで、印刷の基本設定や印刷プレビュー表示などができます。
ページ数のTO・FROMをセル自体に指定する
ページ数を指定するToとFromを数字ではなくセルを指定してみたら、上手くできたのでこの方法をいつも使っています。
まずは、分かりやすくToとFromを数字からセルを指定したVBAコードを書きます。
シートは「HOME」で開始ページ数を入力しているセルは「BM2」、終了ページ数を入力しているセルは「BM3」とし、印刷枚数は1枚を固定しています。
Private Sub CommandButton1_Click()
ActiveWindow.SelectedSheets.PrintOut FROM:=Sheets(“HOME”).Range(“BM2”).Value, To:=Sheets(“HOME”).Range(“BM3”).Value, COPIES:=1, COLLATE:=True
End Sub
- コマンドボタン1をクリックしたら
- 表示されているシートを印刷で、開始ページ数はシート「HOME」のセル「BM2」の値を開始ページ数にする
- 終了ページ数はシート「HOME」のセル「BM3」の値を終了ページ数にして、印刷枚数1、部単位。
- マクロ記述終了
これで、人数など条件が変わるとセルBM2、BM3に変更された数字が計算されて入力されているので、わざわざ、開始ページ・終了ページを設定しなくても自動的に印刷されるようになります。
意外と難しくないでしょう、でも使うことが少ないのか、需要が無いのか、あまりこの方法って具体的に載っていませんでした。
エラー回避とメッセージと自動復帰を追加しよう
このままのVBAコードでは、印刷ができるのですが、コマンドボタンを誤って押してしまうと印刷が始まってしまうので誤クリック防止の為にメッセージを出しましょう。
Private Sub CommandButton1_Click()
msg = MsgBox(“レコードシートを印刷しますか?”, Buttons:=vbYesNo + vbQuestion)
If msg = vbYes Then
ActiveWindow.SelectedSheets.PrintOut FROM:=Sheets(“HOME”).Range(“BM2”).Value, To:=Sheets(“HOME”).Range(“BM3”).Value, COPIES:=1, COLLATE:=True
Else
Unload UserForm5
Sheets(“R”).Select
Range(“A1”).Select
MsgBox “15秒後に自動復帰します”
Application.OnTime Now + TimeValue(“00:00:15”), “RSTIME”
End If
End Sub
- コマンドボタン1をクリックしたら
- メッセージで「はい」「いいえ」を選択させる
- 「はい」を押したら
- 表示されているシートを印刷で、開始ページ数はシート「HOME」のセル「BM2」の値を開始ページ数にする
- 終了ページ数はシート「HOME」のセル「BM3」の値を終了ページ数にして、印刷枚数は1、部単位
- 「いいえ」を選択したら
- UserForm5を閉じて
- シート「R」を選択
- セル「A1」選択
- 「15秒後に自動復帰します」というメッセージを表示する
- タイマー設定して15秒後に「RSTIME」というプログラムを作動させる
- Ifステートメント終了
- マクロ記録終了
ちょっと長くなりましたが、簡単にいうと、「はい」を選択したら印刷開始、「いいえ」を選択したら、15秒間印刷内容を閲覧出来て、15秒後にRSTIME(元に戻るプログラム)を作動させるという事です。
これをやっておかなかった時は、間違って押したら印刷されてしまい、紙の無駄があったのと、数秒後に元に戻る事ができて、マクロエラーも回避できました。
関連記事
-
印刷
エクセルVBAで未入力データがあるかどうか確認してから印刷する方法
エクセルで表や請求書などを印刷する時に、必要なデータが未入力のままで気づかずに印刷してしまったことありませんか? 紙の無駄になるので印刷する前に自動的に請求書… -
印刷
エクセルのセル値を取得して印刷ページ数・枚数を自動変更する方法
ページを印刷する時に、印刷ページや枚数を選ぶ作業って面倒だと思いませんか? エクセルで印刷するに毎回【ファイル】➡【印刷】を選ぶところから始まり、ページ… -
印刷
VBAで印刷プレビューするとフリーズして操作不能になる時の対処法
エクセルで印刷する前に確認の為に印刷プレビューを実行することがあると思いますが、フリーズして操作不能になってしまった経験はありませんか? ユーザーフォームに間… -
印刷
めんどうな印刷確認を省略してVBAで印刷範囲を指定して印刷する方法
表などを印刷する時に、印刷範囲が決まっていることが多いのに、毎回印刷プレビューで確認したりプリンターの設定確認をするのは面倒だと思いませんか? そこで予め印刷… -
印刷
エクセルVBAでテキストボックスに入力した数字で印刷枚数を指定する
ユーザーフォームに配置したテキストボックスに入力した数字に応じて印刷枚数が指定できたら便利だと思いませんか? ワークシート上で【ファイル】➡【印刷】でペ…
紅葉スポット
-
宝徳寺の紅葉へ関東では貴重な本堂の床に反射する床もみじが見られる
【紅葉見頃】10月中旬~11月下旬 京都でたくさんのお寺で見られる本堂の床に映り込んで真っ赤な紅葉が見られる床もみじが、関東では貴重で群馬県桐生市にある宝徳寺で… -
埼玉県第1号のダム「有間ダム」によりできた名栗湖畔の鏡面紅葉へ
初!と付くものはやっぱり宣伝したい、そして四季折々の景色が見られる自然絶景スポットならばなおさらですよね。 埼玉県飯能市にある名栗湖へ飯能駅からバスで行くこと… -
復元された平家の里へ平清盛像や茅葺屋根と水の郷で温泉と紅葉コラボ
【紅葉見頃】10月中旬~11月中旬 日光市の北部で鬼怒川温泉のさらに奥地にある湯西川温泉には平家落人伝説があり、秘話・伝説などが現代に伝える役目を果たすために「… -
埼玉県指定名勝地の中津峡へ奥秩父を代表する紅葉スポット
秩父エリアトップクラスの絶景と言われている奥秩父の中津峡は、約10㎞もの中津川沿いの紅葉が見られて、その長さは約10㎞と言われて、西武秩父駅からのバス車窓からも… -
透明度抜群の丸沼ダムのダム湖に紅葉景色が反射する秋らしい絶景へ
丸沼といえば丸沼高原スキー場が有名で、日光と沼田の中間に位置しているので、日光駅からでも沼田駅からも丸沼ダムへバスで紅葉を見に行くことができます。 特に東武鉄… -
「乙女の湖」鎌北湖畔の湖面反射が美しい紅葉絶景へ東毛呂駅からバス
飯能市の北にある入間郡毛呂山町の山中にある鎌北湖は、毛呂山町ホームページによると昭和10年に完成した農業用貯水池として作られた人工湖で、周囲2㎞の小さな湖です。…