Page 185 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼PW有りのシート保護の仕方 miki 02/10/9(水) 9:08 ┗Re:PW有りのシート保護の仕方 Jaka 02/10/9(水) 16:48 ┗Re:PW有りのシート保護の仕方 miki 02/10/9(水) 18:55 ┗ごめんなさい。 Jaka 02/10/10(木) 10:50 ┗Re:ごめんなさい。 miki 02/10/10(木) 11:45 ─────────────────────────────────────── ■題名 : PW有りのシート保護の仕方 ■名前 : miki ■日付 : 02/10/9(水) 9:08 -------------------------------------------------------------------------
またまた、ご質問です。 ボタン押下により配布用のエクセルファイルを出力しているんですが、 シートを保護したまま配布したいと思っています。 シートを保護するマクロは分かったのですが、出来ればPWもかけたいと思っているのですが、 可能なのでしょうか? 教えてください。 |
▼miki さん: >またまた、ご質問です。 >ボタン押下により配布用のエクセルファイルを出力しているんですが、 >シートを保護したまま配布したいと思っています。 >シートを保護するマクロは分かったのですが、出来ればPWもかけたいと思っているのですが、 >可能なのでしょうか? >教えてください。 こんにちは。 こんな感じにしてみました。 標準でついている物を利用する方法が解らない物で...。 (欠点1) マクロのパスワード保護をしないとパスワードがバレてしまう。 (欠点2) ユーザー設定にて「シート保護解除ボタン」を独自に作ると簡単に解除できてしまう事。 使用法 シート保護をかけたいブックに下記コードを書いて保存終了してください。 この時点ではシート保護が掛かってないので、もう一度このブックを開いてください。 開くとパスワード入力ボックスが出てきますから、わざとパスワードを間違えてください。 この時に全シートが保護されますから、保存終了してください。 これ以降マクロを無効にして開いてもシート保護が掛かったままです。 (注意) パスワードは忘れない様に。 特にマクロのパスワード保護をした時は、パスワードを忘れてしまったからと、ここのような所に「何とかなら無いでしょうか?」と、問い掛けても誰も答えてくれないでしょうからあきらめて下さい。 こんな程度しか解らなくてごめんなさい。 全部ThisWorkBookに書いてください。 Private Sub Workbook_Activate() 保護解除ボタン非表示 End Sub Private Sub Workbook_Deactivate() 保護解除ボタン表示 End Sub Private Sub Workbook_Open() Dim シート As Worksheet, パスワード As String パスワード = Application.InputBox("パスワードを入力して下さい。", "パスワード入力", , , , , , 2) If パスワード = "False" Then MsgBox "キャンセルされました。" 保護解除 保護解除ボタン非表示 保護 ElseIf パスワード = "1234" Then 保護解除 保護解除ボタン表示 Else MsgBox "パスワードが違います。" 保護解除 保護解除ボタン非表示 保護 End If End Sub Private Sub 保護() For Each シート In Worksheets Worksheets(シート.Name).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True Next End Sub Private Sub 保護解除() For Each シート In Worksheets Worksheets(シート.Name).Unprotect Next End Sub Sub 保護解除ボタン非表示() 'On Error Resume Next For Each CBCel In Application.CommandBars("Worksheet Menu Bar").Controls("ツール(&T)"). _ Controls("保護(&P)").Controls If CBCel.Id = 893 Then CBCel.Enabled = False End If Next End Sub Sub 保護解除ボタン表示() 'On Error Resume Next For Each CBCel In Application.CommandBars("Worksheet Menu Bar").Controls("ツール(&T)"). _ Controls("保護(&P)").Controls If CBCel.Id = 893 Then CBCel.Enabled = True End If Next End Sub |
Jakaさん御返答有難う御座いました。 こんな、やり方があったとは…。 初心者の私には何か手品を見せられたような気分になってしまいました。 私もこれから手品のようなマクロを書けるように頑張りたいと思うので、 これからも御指導お願い致します。 |
マクロを無効にして開くと「保護解除ボタン非表示」が作動しないので、 簡単に保護解除できてしまいました。 全く意味がありませんでした。 |
本当ですね! 昨日はPW有りのシートの保護が出来たのが嬉しくてそこまで確認していませんでした…。 でも、ここまで出来ていればダイジョウブ!有難う御座いました。 |