いつもお世話になっています。
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(エクセル)
-
VBAで印刷の成功判定
Visual Basic(VBA)
-
-
4
イベントプロシージャ 印刷が終わったあと…
Visual Basic(VBA)
-
5
マクロを使って、シート印刷完了時にシートに”完了”マークをつけたいのですが
Visual Basic(VBA)
-
6
印刷をキャンセル
Excel(エクセル)
-
7
エクセルのマクロ
Excel(エクセル)
-
8
VBAで印刷スプール終了の判定をする
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
印刷後メッセージボックスを表示したい
Access(アクセス)
-
11
マクロで印刷→セルの値から部数変更するには
Excel(エクセル)
-
12
【Vb.net】プリンタジョブの取得
Visual Basic(VBA)
-
13
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
14
マクロ BeforePrintイベントがマクロ構文上のprintの前に実行できない
Excel(エクセル)
-
15
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
16
印刷要求順番と印刷出力順番が違う。
Visual Basic(VBA)
-
17
Access サブフォームでの選択行の取得
その他(データベース)
-
18
印刷プレビュー表示後ユーザーフォームが閉じません。
Visual Basic(VBA)
-
19
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
20
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
Wordで画面に出てこない文字が...
-
エクセルの印刷で、テキストボ...
-
ワードで、ヘッダーの文字が表...
-
ワードで作成した文書を印刷す...
-
Excel VBA の印刷後の判定
-
Word2003 フッターが印刷...
-
エクセルにテキストボックスを...
-
ワードの文章と印刷プレビュー...
-
ビジオファイルをPDF形式で保存...
-
EXCEL2013で開くと図形の位置が...
-
WORDでヘッダーを印刷しない方...
-
ACCESS 印刷プレビュー時のみ...
-
【ワード(WORD)】印刷文書の...
-
Word フィールドコードの印刷
-
エクセルの「図のリンク貼り付...
-
印刷した結果、文字が小さすぎ...
-
ワードのズームの固定
-
エクセル2007で重なった画...
-
文書を中央に表示する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
Wordで画面に出てこない文字が...
-
エクセルにテキストボックスを...
-
ワードで、ヘッダーの文字が表...
-
WORDでヘッダーを印刷しない方...
-
ワードで作成した文書を印刷す...
-
エクセルの印刷で、テキストボ...
-
Excel VBA の印刷後の判定
-
ワード差し込みで結果のプレビ...
-
ワードの文章と印刷プレビュー...
-
EXCEL2013で開くと図形の位置が...
-
Word フィールドコードの印刷
-
PDFファイルに関して教えてくだ...
-
貼り付けた画像が印刷すると横...
-
サブレポートのレポートフッタ...
-
Excelで印刷出来ない(Mac)
-
ワードのズームの固定
-
Excelで作成画面と印刷プレビュ...
-
エクセルで自動改行を使ってい...
-
エクセルで印刷するとボタンが...
おすすめ情報