
いつもお世話になっています。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCEL VBA 印刷プレビューダイアログのボタン操作を判定したい
Visual Basic(VBA)
-
エクセルのマクロで印刷プレビューを閉じる方法
Excel(エクセル)
-
イベントプロシージャ 印刷が終わったあと…
Visual Basic(VBA)
-
-
4
VBAで印刷の成功判定
Visual Basic(VBA)
-
5
VBAで印刷スプール終了の判定をする
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
印刷をキャンセル
Excel(エクセル)
-
8
マクロを使って、シート印刷完了時にシートに”完了”マークをつけたいのですが
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
エクセルのマクロ
Excel(エクセル)
-
12
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
EXCELでワークシートを開いたらマクロを自動実行したい
Excel(エクセル)
-
15
エクセルで、ヘッダーに特定セル内容を指定して印刷したい
Excel(エクセル)
-
16
特定のシートの削除を禁止したい(ブックの保護でなく)
Excel(エクセル)
-
17
マクロ実行時 ウィンドウで実行するか確認する
Excel(エクセル)
-
18
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
19
エクセル2010、図が大きすぎますとメッセージが
Excel(エクセル)
-
20
vbaでPDFファイルが印刷されない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
Wordで画面に出てこない文字が...
-
エクセルの印刷で、テキストボ...
-
WORDのVBAで印刷プレビューの制...
-
WORDでヘッダーを印刷しない方...
-
Excel VBA の印刷後の判定
-
エクセルで自動改行を使ってい...
-
Excelで作成した表をWordに貼り...
-
Excelの印刷時にプレビューが出...
-
ワードで、ヘッダーの文字が表...
-
ビジオファイルをPDF形式で保存...
-
ワードで作成した文書を印刷す...
-
イラレCS2:配置画像の倍率表示...
-
印刷プレビューに表示されない...
-
エクセルにテキストボックスを...
-
WORD 縦書きで印刷レイアウトを...
-
Illustratorでアウトライン化し...
-
ワードのズームの固定
-
エクセルで印刷するとボタンが...
-
ワード差し込みで結果のプレビ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Word2010の差し込み印刷で結果...
-
エクセルの印刷で、テキストボ...
-
Wordで画面に出てこない文字が...
-
ワードで作成した文書を印刷す...
-
ワードで、ヘッダーの文字が表...
-
WORDでヘッダーを印刷しない方...
-
Excel VBA の印刷後の判定
-
エクセルにテキストボックスを...
-
ワードの文章と印刷プレビュー...
-
ワード差し込みで結果のプレビ...
-
Word フィールドコードの印刷
-
Excelで作成した表をWordに貼り...
-
サブレポートのレポートフッタ...
-
ワードのズームの固定
-
貼り付けた画像が印刷すると横...
-
EXCEL2013で開くと図形の位置が...
-
エクセルで自動改行を使ってい...
-
Wordの印刷レイアウトと印刷プ...
-
word 白黒で印刷プレビュー
-
ビジオファイルをPDF形式で保存...
おすすめ情報