dポイントプレゼントキャンペーン実施中!

あるシートだけ、抽出などの定型作業があるため、マクロを実行して印刷する必要があり、マクロを実行しボタンを付けました。
そのボタンからのみしか印刷ができないようにしたいのですが、そういったことはできるでしょうか?

A 回答 (2件)

こんにちは。



No.1さんの回答では、マクロを無効にされたらだめなので現実的でないとありますが、印刷処理をマクロで行う事を前提にしたブックなのだから、マクロ無効にしたらそもそも使えないブックなので、マクロ無効という状態はないと思います。

ということで、マクロで制御するのでいいと思います。

ThisWorkbookのBefeorPrintイベントで処理します。

印刷させたくないシートが Sheet2 だとすると

Private Sub Workbook_BeforePrint(Cancel As Boolean)

If ActiveSheet.Name = "Sheet2" Then Cancel = True

End Sub

簡単に書くとこのようになるでしょうか。

このままでは、ボタンからの印刷も出来ないので、フラグを立てて処理するか、印刷専用のシートを作り、印刷時はそのシートに切り替えて印刷する などとすればいいでしょう。

フラグを立てるなら

標準モジュールに

Option Explicit

Public pflg As Integer

としておき、ThisWorkbookのOpenイベントに

Private Sub Workbook_Open()

pflg = 0

End Sub

とします。

印刷ボタンのマクロで、印刷前にpflgを1にしておき、印刷後に0に戻します。

BeforePrintイベントの記述も少し変更

Private Sub Workbook_BeforePrint(Cancel As Boolean)

If ActiveSheet.Name = "Sheet2" And pflg = 0 Then Cancel = True

End Sub

印刷用シート作る方法は、カメラ機能を使うのが簡単でしょうか。
    • good
    • 1

マクロを使う事で可能ですが、逆にマクロが無効にされていたら出来ません。


xlsmをxlsxで保存しなおされただけで駄目になります。
そのため、現実的ではありません。

ただ、そのシートを通常非表示にしても良いのなら、対象シートを非表示にし、パスワード付でブックの保護(保護対象に「シート構成」を選択)をかけておき、マクロを実行したときだけ保護を解除して表示して印刷。そしてまた非表示にして保護をかける。
と言う処理を行えば可能です。

もう一つの案としては、そのシートに目立つ大きさと色で「定型作業実施前です」の様な警告文字列を入れておき、マクロから印刷する時だけ、その文字列を一時的に消して印刷。印刷後は元に戻す……と言う事でも用は足りそうに思えます。
    • good
    • 0

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

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