プロが教えるわが家の防犯対策術!

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メソッドで再度印刷してしまう)

A 回答 (3件)

ANo.1です。


よく見たら質問の回答とは違いました。

質問の中のプログラムに、リンク先の「プレビューのボタンを使用不可にする」のプログラムを組み込んで、
st.PrintPreview
の部分を、
kEnablePreview st
にすると、質問中のプログラムがそのままでいいみたいです。

と言う事です。
    • good
    • 3

余り自信ないが


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

googleで探してみたら、こんなのありましたが・・・



http://homepage2.nifty.com/kmado/ke_m9.htm
E00M089(Excel2002) プレビューのボタンを使用不可にする

Excel2000で試したらできました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A