スポンサーリンク

Excel VBAでは,シートの印刷前後にイベントを設定可能

Excel/Wordオフィス製品のTipsまとめへ


シートの印刷の実行前と完了後のタイミングを検出して,

VBAマクロで処理を埋め込む事が可能。

  • 印刷前:Workbook_BeforePrint
  • 印刷後:Application.OnTimeを上手く使う


注意点として,Workbook_AfterPrintという関数は存在しないので,代替手段を使う。下記リンクを参照。


参考ページ:

印刷前と印刷後のイベントを制御する-エクセルVBAテクニック集
http://www.officelabo.net/vbaskill/vb...

  • 印刷前にOntimeで実行すると、実際には印刷後に実行される


10.5 印刷する前 - Excel VBA Tips
http://www.happy2-island.com/excelsmi...

  • 印刷しちゃいけないワークシートだったときは印刷に「待った!」をかけるサンプルコード


エクセルVBA エクセルツールバーの印刷ボタンを押したときに、メッセージボックス...
http://detail.chiebukuro.yahoo.co.jp/...

  • 複雑な処理も埋め込める


Excel VBA の印刷後の判定 - オフィス系ソフト - 教えて!goo
http://oshiete.goo.ne.jp/qa/1786232.html

  • BeforePrint イベントは印刷プレビューでもイベントが走ってしまうという欠点がある


ワークブックが持つ主なイベントプロシージャの一覧表:

エクセルExcel大事典 VBAマクロ イベントプロシージャ Open Target Cancel EnableEvents Volatile
http://home.att.ne.jp/zeta/gen/excel/...

  • イベントプロシージャとは、ブックやワークシートなど、Excelのオブジェクトに対して特定の動作を行ったとき、OSがそれを検知して実行させることができるプロシージャのこと


帳票ソリューションを使う場合,似たような独自のCOMイベントがある:

BeforeFormatPage Event (Report Object)
http://devlibrary.businessobjects.com...


VB Crystal Report, Can I change paper bins?
http://computer-programming-forum.com...

発端になった質問:

エクセル2010です。 左から順に店名・品名・売上数量と並んでい..
http://q.hatena.ne.jp/1385692347

  • いったん印刷が始まってしまうと,1ジョブ分の印刷タスクが終わるまでは,Excel側からプリンタ側に制御が移っているので,手を出せない。だから,印刷の実行単位を分けたほうがよくて,そのためにはシートを分割したほうがいい
  • Excel で中心になるのは、シート内でどの位置にあるか、という情報。「改ページした結果のページ内で、どこの位置にあるか」という情報は、excel では扱いづらいので、そういう発想は避ける
  • 改ページを手動で頑張って使い続けると、データが増えてきた時にメンテに苦労するし困ることも多いので、あまりおすすめできない


Excel/Wordオフィス製品のTipsまとめへ