• 締切済み

EXCEL VBA 印刷プレビューダイアログのボタン操作を判定したい

EXCEL VBAでシートの印刷アプリを作っています。 印刷前にプレビューを見せたいので印刷プレビューダイアログを呼び出していますが、 印刷プレビュー後、実際に印刷に移る前に、ユーザ向けメッセージを出したいのです。 印刷プレビュー画面には「印刷」と「閉じる」ボタンがありますが 「印刷ボタン」を押した場合はVBA側でこう処理、 「閉じるボタン」を押した場合はこう処理 とVBA側で判定することは可能でしょうか。 ご指導お願いします。 参照用コード(思った通りに動作していませんが・・・・) Private Sub Print_Sheet() Dim i As Integer Dim st As Worksheet Set st = Worksheets("印刷シート") i = MsgBox("印刷前にプレビューを表示しますか?", vbYesNo, "シート印刷") If i = 6 Then st.PrintPreview End If i = MsgBox("印刷を開始しますか?" & vbCr & vbLf & "印刷する場合は、プリンターの確認をしてください", _ vbYesNo, "シート印刷") If i <> 6 Then Exit Sub Else st.PrintOut End If Set st = Nothing End Sub 上記のコードだと、印刷プレビューダイアログにおいて、 「閉じる」ボタンを押した場合はそのまま再度MsgBoxで印刷するか否かを聞きに行くので良いのですが 「印刷」ボタンを押した場合は印刷プレビューダイアログから印刷ダイアログが呼ばれそのまま印刷ができてしまいます。 (で、下のフローに流れてPrintOutメソッドで再度印刷してしまう)

みんなの回答

回答No.3

ANo.1です。 よく見たら質問の回答とは違いました。 質問の中のプログラムに、リンク先の「プレビューのボタンを使用不可にする」のプログラムを組み込んで、 st.PrintPreview の部分を、 kEnablePreview st にすると、質問中のプログラムがそのままでいいみたいです。 と言う事です。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

余り自信ないが Sub test01() Dim a a = Application.Dialogs(xlDialogPrintPreview).Show MsgBox a End Sub を実行すると 閉じるをクリックー>FALSE 印刷したーー>TRUE が返る(になる)。 ただ印刷の終った後しか出てこないが。 これが使えないでしょうか。

回答No.1

googleで探してみたら、こんなのありましたが・・・ http://homepage2.nifty.com/kmado/ke_m9.htm E00M089(Excel2002) プレビューのボタンを使用不可にする Excel2000で試したらできました。

関連するQ&A