- ベストアンサー
エクセルのシート1つだけの印刷制御について
- エクセルのシート1つだけの印刷制御方法を教えてください。
- 現在は全てのシートの印刷制御はできるが、1つのシートだけを印刷できない方法が分からない。
- 使用しているのはWin XP Office 2003。ワークブック全体の印刷制御を無効にする方法を知っているが、1つのシートだけを無効にする方法が知りたい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ThisWorkbookに Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet3" Then MsgBox "このシートは印刷不可" Cancel = True End If End Sub といれ Sheet1をActiveにしてます。そういう状態で Sub test01() MsgBox ActiveSheet.Name Worksheets("sheet3").Range("a1:c3").PrintOut End Sub を実行すると、Sheet1と表示され、Sheet3が印刷されました。 だから操作で印刷する場合は、印刷するシートを必ずアクチブにするでしょうが、マクロも含めると、具体的に印刷するシート名を指定して禁止しないと駄目だと思います。しかし、プリントしようとしているSheet名をVBAで捉える方法が判りません。取りあえず。
その他の回答 (2)
- shishishishi
- ベストアンサー率39% (362/921)
Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet1" Or ActiveSheet.Name = "ほげほげ" Then MsgBox "このExcelシートは、印刷できません", vbExclamation Cancel = True End If End Sub ですね。
- shishishishi
- ベストアンサー率39% (362/921)
例えばSheet1だけそうしたいのであれば Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet1" Then MsgBox "このExcelシートは、印刷できません", vbExclamation Cancel = True End If End Sub でいかがでしょうか?
お礼
早急な回答ありがとうございます。早速、試してみましたが、即効OKでした。ありがとうございます。 ちなみに、2つ以上のsheetに同内容の印刷制御を施すにはどうしたらよろしいでしょうか? 大変お手数ですが、お教え頂けませんでしょうか?
補足
すみません。あともうひとつ。sheet名が、たとえばA又はBの場合 If ActiveSheet.Name ="A"or"B" みたいな事はできるのでしょうか? 複数のエクセルファイルがあり、一気に印刷制御を掛けたいんです。
お礼
ご丁寧に回答頂きましてありがとうございます。今回教えて頂いた事を仕事に生かさせて頂きます。