• 締切済み

特定のシートだけ印刷はマクロのボタンで実行

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

みんなの回答

  • M-SOFT
  • ベストアンサー率58% (23/39)
回答No.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 印刷用シート作る方法は、カメラ機能を使うのが簡単でしょうか。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

マクロを使う事で可能ですが、逆にマクロが無効にされていたら出来ません。 xlsmをxlsxで保存しなおされただけで駄目になります。 そのため、現実的ではありません。 ただ、そのシートを通常非表示にしても良いのなら、対象シートを非表示にし、パスワード付でブックの保護(保護対象に「シート構成」を選択)をかけておき、マクロを実行したときだけ保護を解除して表示して印刷。そしてまた非表示にして保護をかける。 と言う処理を行えば可能です。 もう一つの案としては、そのシートに目立つ大きさと色で「定型作業実施前です」の様な警告文字列を入れておき、マクロから印刷する時だけ、その文字列を一時的に消して印刷。印刷後は元に戻す……と言う事でも用は足りそうに思えます。