Excelのマクロで印刷制限と閲覧制限を掛ける
エクセルで、1つのデータに5つのシートを作成し、うち4つのシートにデータ(携帯番号のリスト)が
入っています。
このデータに、閲覧制限と印刷制限を掛けようとし、インターネットで色々探し周り何とか形にはなりました。
「Alt+F11」で開くプロジェクトにはパスワードを掛け、通常見れない状態にし、
「VBAProject」の中の5つのシートにではなく「ThisWorkbook」に以下のマクロを
入れました。
---制限1--------------------------------------------
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim y, x, p
Application.DisplayAlerts = False
x = "password" ←←←これが印刷、プレビュー確認の為のパス
y = InputBox("パスワードを入力してください", "印刷")
If y <> x Then
For p = 1 To Sheets.Count
Sheets(p).PageSetup.PrintArea = "$IV$65536"
Next p
Else
For p = 1 To Sheets.Count
Sheets(p).PageSetup.PrintArea = "☆☆☆☆☆☆"
Next p
End If
Application.DisplayAlerts = True
End Sub
--制限2---------------------------------------------
Private Sub Workbook_Open()
Sheets("Sheet1").Visible = True
Sheets("Sheet2").Visible = True
Sheets("Sheet3").Visible = True
Sheets("Sheet4").Visible = True
Sheets("Sheet1").Select
End Sub
--制限3---------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Sheet1").Visible = False
Sheets("Sheet2").Visible = False
Sheets("Sheet3").Visible = False
Sheets("Sheet4").Visible = False
End Sub
---------------------------------------------------
制限2で、開く時にマクロを有効にしなければ、Sheet1~4が表示されず、
無効にすれば何も入力されていないダミーのSheet5が表示されます。
制限3では、閉じる時にSheet1~4を隠し、ダミーのSheet5のみがある状態にして
閉じるマクロです。
質問したいのは制限1の印刷の制限の所なのです。
内容は、印刷or印刷プレビュー確認時にパスワードを求め、正しければ
正常に印刷orプレビューを見れますが、間違えれば何も入力されていない
【IV65536】のセルを印刷orプレビューで確認するという内容です。
そこでマクロ内の「☆」の部分に、印刷したいセル番地($A$1:$B$20など)
を指定して入れると、パスワードが正しい場合、このセル番地内だけを印刷、
プレビュー確認が出来るのですが、問題はSheet1~4が全てそのセル番地で
印刷orプレビュー確認されてしまう事です。
当然Sheet1~4の印刷したい範囲は全てバラバラなので、どれかに合わせれば
どれかが印刷されない部分があったり。。。
そこで、Sheet1~4全てに入力しセル番地を変えてみましたが、上手くいかずほとほと困っております。
全くのマクロの初心者と言っていい自分ですが、こんな自分でも分かるようなマクロで
この問題を解決できないでしょうか?
お礼
マクロを記憶させて、それをなんとか使ったり、コピベ程度では無理そうですね。。。 助言ありがとうございます。