[リストへもどる]
一括表示

投稿時間:2004/07/08(Thu) 11:37
投稿者名:M.
URL :
タイトル:
EXCELのプレビューで印刷したかどうかの判断をしたい
一覧入力する画面から「印刷」ボタンを押下すると
EXCELのプレビューを表示する画面を作成しております。

プレビュー画面が閉じられた後の処理で、
印刷した場合は「印刷しました」メッセージを表示後
一覧の内容をDBに登録。
「閉じる」押下の場合はメッセージを表示せず、DB登録も行わない。
という判断をしたいのですが、どうしたらよいでしょう?
ご教授お願いいたします。

投稿時間:2004/07/08(Thu) 16:09
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: EXCELのプレビューで印刷したかどうかの判断をしたい
どなたからもレスが無いようなので、口火を切らせて頂きます。
他に簡単な方法があるか知りませんが、私が思いついたのは、使用している
プリンター(今Excelで選択している)の印刷ジョブをAPIを使って監視する
位しか思いつきません。
(VB上でも印刷を開始した、終了したと言ったイベントは取得できなかったかと)

投稿時間:2004/07/08(Thu) 17:22
投稿者名:M.
URL :
タイトル:
Re^2: EXCELのプレビューで印刷したかどうかの判断をしたい
直々のレスありがとうございます。

確かに印刷ジョブ監視API(EnumJobs)でいけそうですが、
なんか大袈裟(に感じるのは私だけ?)になりそうですね…

EXCELのプレビュー画面でのボタン押下のイベントが拾えないかな、などと
安直に考えていたもので

SEと相談し方向性(EXCELのプレビューを使用するかどうかも含む)をもう一度検討してみます。
ありがとうございました。

投稿時間:2004/07/08(Thu) 18:10
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: EXCELのプレビューで印刷したかどうかの判断をしたい
> EXCELのプレビュー画面でのボタン押下のイベントが拾えないかな、などと
> 安直に考えていたもので

ボタンをクリックするより難しいでしょうね!

後は、試していませんが、Workbook_BeforePrint イベントをうまく利用すれば
いけるかも知れません。下記のような感じでどうでしょう
# 必要事項は別途宣言して置いて下さい。

Private Sub Command1_Click()
    '印刷プレビューの開始フラグ
    PreviewOn = -1 '印刷プレビューも印刷としてイベントが発生するので
    xlApp.ActiveWindow.SelectedSheets.PrintPreview
End Sub

'ExcelのイベントをVBから取得 (詳しくは過去のログに)
Private Sub xlApp_WorkbookBeforePrint(ByVal Wbook As Excel.Workbook, _
                                      Cancel As Boolean)
    PreviewOn = PreviewOn + 1
    '印刷プレビューのイベントを除く
  If PreviewOn = 1 Then
        MsgBox "印刷されました"
        PreviewOn = 0
    End If
End Sub

投稿時間:2004/07/08(Thu) 18:41
投稿者名:M.
URL :
タイトル:
Re^4: EXCELのプレビューで印刷したかどうかの判断をしたい
> 後は、試していませんが、Workbook_BeforePrint イベントをうまく利用すれば
> いけるかも知れません。

早速試してみましたが、プレビュー画面が立ち上がった時点でイベントが発生してしまうのと、
実際に印刷ボタン押下時には発生しない(!!)という理不尽な動作をされてしまいました。。。

このレスの書き込み中にSEから決定を頂きまして、
「宿命だね。印刷した時、何もせず閉じた時の動きをわけないで運用で逃げよう。」
とのことでした。

職業PGの悲しい性。
これ以上の知的探求をあきらめます。
お世話様でした。

でも実際やるとしたら、やはり印刷ジョブを監視するしかないかな、という結論ですかね
長々と失礼いたしました。

投稿時間:2004/07/08(Thu) 19:09
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
試した限りではOKでしたが
上記コードで試した限りでは、問題なく取得できましたが。

投稿時間:2004/07/09(Fri) 10:26
投稿者名:M.
URL :
タイトル:
Re: 試した限りではOKでしたが
> 上記コードで試した限りでは、問題なく取得できましたが。

すみません。
勘違いでした。イベントは通ってました。

ご迷惑をおかけしました。