
いつもお世話になっています。
Excel VBA で不明な点が出てきたので質問させていただきます。
処理順として
1.AccessからExcelを出力し、出力後はそのまま表示しておく。
2.表示してあるExcelをユーザーが印刷する。
3.印刷したシートの見出しの色を変更する。
の3つなのですが、3の処理をExcelマクロで実行する際に、
印刷が実行されたかどうかの判別方法がわからないのです。
印刷直前でも構わないと思い、BeforePrint イベントを調べて使用してみたのですが、
印刷プレビューでもイベントが走ってしまい、ダメでした。
印刷実行なのか、プレビューなのか区別が出来る方法があればとも思っているのですが…。
ご存知の方、ご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
印刷したものと、プレビューしたもののイベントの区別をしたいということですね。いくつか方法を考えてみましたが、実際に印刷したかどうかは、API関数でしか把握できませんが、かなり大掛かりで、リスクを背負うことになってしまいます。私としては、あまりお勧めできません。
私が、実際の開発で、Excelの中だけでどう考えるかというと、あまり良い案は浮かびません。
'<ThisWorkbook>
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If PrinterFlg = False Then
Cancel = True
End If
End Sub
'<標準モジュール>
Public PrinterFlg As Boolean
'<シートモジュール>
Private Sub CommandButton1_Click()
PrinterFlg = True
ActiveSheet.PrintOut
'他の作業
PrinterFlg = False
End Sub
こうすれば、PrinterFlg がTrue にならない限りは、印刷もプレビューもされませんので、後は、開発側の設けたボタンで、印刷が把握できます。そのボタンを押した時のみ、有効になるわけです。ユーザー側に余計なことをしてもらいたくない場合は、メニューバーやツールバーも隠します。自分が望むボタンだけを置くことにします。
ここまでは良いと思いますが、しかし、印刷プレビューを許す場合は、印刷プレビュー画面から印刷が可能ですから、そこでは、もう BeforePrint イベントが利きません。印刷プレビューのイベントで、例えば、PDF出力などのダミーのプリンタ・ドライバに切り替えるぐらいしか、今のところ思いつきません。やはり、API関数での制御になってしまいます。
根本的にPrint Out Preview と Print Out の違いというは、Excel上ではないかもしれません。
ちなみに、印刷プレビューのイベントというのは、以下のようなものです。
'Class 1
Public WithEvents myPrinterButton As CommandBarButton
Private Sub myPrinterButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
Application.ActivePrinter = " 別のプリンタドライバ "
End Sub
'標準モジュール
Dim myClass As Class1
Sub PreviewEventSetting()
Set myClass = New Class1
Set myClass.myPrinterButton = Application.CommandBars("Standard").FindControl(, 109)
End Sub
なお、PreviewEventSetting を、ThisWorkbook の Open イベントから、Call すればよいと思います。
アドバイスありがとうございます。
API関数の使用になりますか。
それ以外となると、やはりユーザーに印刷プレビューをさせない方法をとるしかないのですかね。
ありがとうございます。参考にさせていただきます。
No.2
- 回答日時:
こんにちは。
Accessからのデータを常に決まったブックの決まったシートに出力するようにすれば、
案1.
シート上に、Print用とPreview用のボタンを配置
案2.
Print用とPreview用のボタンを配置したユーザー定義のフローティングメニューを表示
案3.
Print用とPreview用のボタンを配置したモードレスのユーザーフォームを表示
このような方法が簡単では、と思います。
但し、何れの場合もメニューバー、ツールバー等は非表示にしておくことは言うまでもありません。
以上です。
回答ありがとうございます。
ツールバー・メニューバーでプレビュー禁止でいきたいと思います。
ありがとうございます。今後の為、頂いた回答の案も参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- その他(Microsoft Office) Excelのマクロについて教えてください。 1 2022/03/25 10:03
- Excel(エクセル) Excel VBA Backstageビューでの印刷 2 2022/06/03 16:56
- Excel(エクセル) Excel のヘルプ文の印刷 1 2023/06/07 11:17
- Excel(エクセル) Excelであるシートだけ印刷できない 1 2022/04/01 09:04
- Excel(エクセル) 【Excel】エクセルの1シートが2枚に分割されてしまうので印刷プレビューを押して閉 4 2022/12/13 13:12
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCEL VBA 印刷プレビューダイアログのボタン操作を判定したい
Visual Basic(VBA)
-
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
イベントプロシージャ 印刷が終わったあと…
Visual Basic(VBA)
-
-
4
VBAで印刷スプール終了の判定をする
Visual Basic(VBA)
-
5
VBAで印刷の成功判定
Visual Basic(VBA)
-
6
印刷をキャンセル
Excel(エクセル)
-
7
マクロを使って、シート印刷完了時にシートに”完了”マークをつけたいのですが
Visual Basic(VBA)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
エクセルのマクロ
Excel(エクセル)
-
11
印刷後メッセージボックスを表示したい
Access(アクセス)
-
12
マクロ BeforePrintイベントがマクロ構文上のprintの前に実行できない
Excel(エクセル)
-
13
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
14
マクロ実行時 ウィンドウで実行するか確認する
Excel(エクセル)
-
15
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
16
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
17
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
18
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
19
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
20
印刷ダイアログを表示させない方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
パワーポイントの印刷について
-
EXCEL2000のオートシェイプの位...
-
エクセルの印刷で、テキストボ...
-
プレビュー表示後の印刷
-
Excel VBA の印刷後の判定
-
Word フィールドコードの印刷
-
MS-WORDで太字印刷ができず
-
ワードで、ヘッダーの文字が表...
-
ワード 印刷できません 教え...
-
ソースDiffを紙で保存するため...
-
筆ぐるめで宛て先印刷・・役職...
-
Wordで文字が表示されません
-
印刷プレビューが正常に表示さ...
-
Microsoft Office PictureManag...
-
印刷プレビュー通りに印刷でき...
-
エクセルのセル内の文字配置に...
-
エクセルのオートシェイプ内の...
-
word2002 で編集時の表示ウイン...
-
wordの画面サイズ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
Wordで画面に出てこない文字が...
-
エクセルの印刷で、テキストボ...
-
ワードで、ヘッダーの文字が表...
-
ワードで作成した文書を印刷す...
-
エクセルにテキストボックスを...
-
WORDでヘッダーを印刷しない方...
-
ワード差し込みで結果のプレビ...
-
ワードの文章と印刷プレビュー...
-
Excel VBA の印刷後の判定
-
Word フィールドコードの印刷
-
サブレポートのレポートフッタ...
-
ワードのズームの固定
-
エクセルで自動改行を使ってい...
-
Excelで作成した表をWordに貼り...
-
EXCEL2013で開くと図形の位置が...
-
word 白黒で印刷プレビュー
-
ビジオファイルをPDF形式で保存...
-
Wordの文書作成で、画面上は一...
-
貼り付けた画像が印刷すると横...
おすすめ情報