
これまでエクセル2003を使っていました。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "印刷指示されました。"
End Sub
このコードで、PrintでもPrintPreviewでもイベントが発生しました。
ところが、今エクセル2010でためしたところ、Previewではイベントが発生しません。印刷を指示しないかぎり発生しないようです。
では、新たにBeforePrintPreview?ができたのかと思いましたが見当たりません。
2010でPrintPreviewでイベントを発生させる方法はありますか?
あるいは2003で、PrintとPrintPreviewのイベントを別に取得する方法はありますか?
教えてください。
No.2ベストアンサー
- 回答日時:
>これで何か問題が起きるおそれはないでしょうか?
Sheet1以外にシートが無ければ良いですが、
印刷対象が複数であればそれなりに対応しないといけないでしょう。
また、印刷用のボタンでは、プリンタを切り替えたい場合も考慮しておく必要があります。
Sheet1.PrintOut ではなくて
Application.Dialogs(xlDialogPrint).Show を使うとか。
ただ、今回の目的には対応できないですね。
>社内のユーザーがプレビューされた段階で入力が完了したと勘違いする危惧がある
2010の場合のプレビューは[ファイル]タブの[印刷]の事ですよね。
BeforePrintが走らない状況には変わりありません。
さて、どうしましょうか。
>或る入力用のシートを作っていて、ユーザーが印刷指示しても、
>入力に矛盾あるいは不足の場合、印字できないようなマクロを組んでおりました。
入力値をチェックしてユーザーに注意喚起する、
またはその後の操作に制限をかけたいというニーズがある事は理解できます。
『印字できない』ようにするのが最終目的ならBeforePrintの制御で良いですね。
別にユーザーが入力未完了と勘違いしたとしても、『印字できない』事は達成できてます。
(だったら現状のままで良い事になります)
2000-2010の各バージョンによって操作感に違いが出るのは事実なので
2010ユーザーにそれを認識してもらうしかないですね。
それは許容できないという事であれば、
『印字できない』のが最終目的ではない、という事になりませんか?
入力作業を終える時に、『入力に矛盾あるいは不足を許したくない』という事では?
もし、こちらが目的だったら、それに見合ったイベントでのチェックや仕掛けを考えたほうが良い気がします。
「入力規則」やWorksheet_Changeイベントなど。
> Sheet1以外にシートが無ければ良いですが、
> 印刷対象が複数であればそれなりに対応しないといけないでしょう。
すみません。質問では主題ではないので省略しましたが
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name <> Sheet1.Name Then Exit Sub
と手当てしております。
> 2010の場合のプレビューは[ファイル]タブの[印刷]の事ですよね。
> BeforePrintが走らない状況には変わりありません。
仰せのとおりでした。
> 入力作業を終える時に、『入力に矛盾あるいは不足を許したくない』という事では?
これもその通りですね。
もう一度考え直して見ます。
ありがとうございました。
No.1
- 回答日時:
Excel2010で従来バージョンの(全画面)印刷プレビューを行うには、
クイックアクセスツールバーでカスタマイズする必要があります。
http://www.becoolusers.com/office/2010print-prev …
この印刷プレビューではBeforePrintイベントが発生します。
>2010でPrintPreviewでイベントを発生させる方法はありますか?
PrintPreviewのみのイベントはありません。
>あるいは2003で、PrintとPrintPreviewのイベントを別に取得する方法はありますか?
これはかなり難しいです。
以前、CommandBarControlによって識別できるのでは、と考えた事がありますが
ID:= 4 のCommandBarControl、つまり[ファイル]-[印刷]からの[印刷プレビュー]が識別できません。
APIを使ってできるのかもしれませんが茨の道です。
どういった目的で[プレビュー]と[印刷]を識別したいのでしょう?
その目的にもよりますが、BeforePrintで印刷を制限してしまって、
[プレビュー]or[印刷]は自前のコマンドからでないと実行できないようにする、
というのが現実的な対応かと思われます。
#それでも状況によってはかなり使いづらくなります。
> どういった目的で[プレビュー]と[印刷]を識別したいのでしょう?
> その目的にもよりますが、BeforePrintで印刷を制限してしまって、
社内には2000、2003、2010が混在してます。
どれも同じ挙動をしてくれるならわざわざ識別する必要はないんです。
或る入力用のシートを作っていて、ユーザーが印刷指示しても、入力に矛盾あるいは不足の場合、印字できないようなマクロを組んでおりました。
ところが、問題がある場合、2003までならプレビュー画面も表示されないのに、2010ではプレビューが表示されてしまいます。
これでは、社内のユーザーがプレビューされた段階で入力が完了したと勘違いする危惧があるための質問でした。
でもかなりやっかいなようですので、今回は以下のように、エクセル本来の印刷指示は無効にして、
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "シート上の印刷ボタンを押してください。"
End Sub
Private Sub CommandButton1_Click()
' エラーチェックのコード (略)
Application.EnableEvents = False
Sheet1.PrintPreview
Application.EnableEvents = True
End Sub
として対応しようと思います。
これで何か問題が起きるおそれはないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- オープンソース OpenOffice Calc basic で印刷プレビューを表示する方法 1 2023/04/15 12:43
- Visual Basic(VBA) エクセル VBAについて 2 2022/05/16 16:33
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) エクセルVBAで次の二つを行いたいのですが思うように動きません。どう修正したらよいのでしょうか? 2 2023/04/22 14:55
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
パワーポイントの印刷について
-
EXCEL2000のオートシェイプの位...
-
ワード 印刷できません 教え...
-
エクセルの印刷で、テキストボ...
-
印刷プレビューにはうつるが印...
-
プレビュー表示後の印刷
-
パソコンに移動した写真が印刷...
-
エクセル2007 一度有効にした...
-
PhotShop
-
Word フィールドコードの印刷
-
ソースDiffを紙で保存するため...
-
エクセル コメント 表示と印...
-
マクロの連続印刷で2枚目から...
-
下書きモードで2ページ分を並...
-
Access2007レポートで画像が印...
-
Excelで任意の範囲の印刷プレビ...
-
印刷プレビューが正常に表示さ...
-
筆ぐるめの「表示のみ印刷」 に...
-
word 網掛けが印刷されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
Wordで画面に出てこない文字が...
-
エクセルの印刷で、テキストボ...
-
ワードで、ヘッダーの文字が表...
-
ワードで作成した文書を印刷す...
-
エクセルにテキストボックスを...
-
WORDでヘッダーを印刷しない方...
-
ワード差し込みで結果のプレビ...
-
ワードの文章と印刷プレビュー...
-
Excel VBA の印刷後の判定
-
Word フィールドコードの印刷
-
サブレポートのレポートフッタ...
-
ワードのズームの固定
-
エクセルで自動改行を使ってい...
-
Excelで作成した表をWordに貼り...
-
EXCEL2013で開くと図形の位置が...
-
word 白黒で印刷プレビュー
-
ビジオファイルをPDF形式で保存...
-
Wordの文書作成で、画面上は一...
-
貼り付けた画像が印刷すると横...
おすすめ情報