- ベストアンサー
エクセルVBAのBeforePrintで
ThisWorkbookモジュールで Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name <> "Sheet1" Then Exit Sub MsgBox "BeforePrintイベント発生" End Sub を使って、Sheet1での印刷のイベントを取得できます。 ただ、指示がPrintなのかPrintPreviewなのかが取得できません。 印刷またはプレビューされる前にどちらの指示なのかを取得する方法がありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Excelでできるかどうかわかりませんが(すみません) SetWindowsHookEx を使ってメッセージを取得するか SetWindowLongとCallWindowProc でサブクラス化を利用してメッセージを取得するか などでしょうか。
その他の回答 (1)
- o_chi_chi
- ベストアンサー率45% (131/287)
回答No.1
たぶんAPI関数とかじゃないと把握できないような。。。。 ちなみに下記じゃないとPrintイベントキャンセルできないと思います。 --- If ActiveSheet.Name <> "Sheet1" Then Cancel = True
質問者
お礼
Cancel = True が書き漏れてました、すみません。 > たぶんAPI関数とかじゃないと把握できないような。。。。 API関数って、 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) みたいなものですか? これでSleep 100 とかはよく使うのですが、今回の場合はどんな書き方になるのかご教示いただければ幸いです。
お礼
ありがとうございます。 むずかしそうですね。 ところが今、エクセル2010をためしたところ、 Private Sub Workbook_BeforePrint(Cancel As Boolean) MsgBox "印刷指示されました" End Sub これがPrintPreviewでは動かないんです。 Printなら反応します。 ひょっとして2010ではBeforePrintPreviewイベントができたのかと思いましたが、そうでもなさそうです。 不思議です。
補足
http://okwave.jp/qa/q7413770.html に再質問します。 よろしくお願いします。