過去ログ

                                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もかけたいと思っているのですが、
可能なのでしょうか?
教えてください。
 ───────────────────────────────────────  ■題名 : Re:PW有りのシート保護の仕方  ■名前 : Jaka  ■日付 : 02/10/9(水) 16:48  -------------------------------------------------------------------------
   ▼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
 ───────────────────────────────────────  ■題名 : Re:PW有りのシート保護の仕方  ■名前 : miki  ■日付 : 02/10/9(水) 18:55  -------------------------------------------------------------------------
   Jakaさん御返答有難う御座いました。
こんな、やり方があったとは…。
初心者の私には何か手品を見せられたような気分になってしまいました。
私もこれから手品のようなマクロを書けるように頑張りたいと思うので、
これからも御指導お願い致します。
 ───────────────────────────────────────  ■題名 : ごめんなさい。  ■名前 : Jaka  ■日付 : 02/10/10(木) 10:50  -------------------------------------------------------------------------
   マクロを無効にして開くと「保護解除ボタン非表示」が作動しないので、
簡単に保護解除できてしまいました。
全く意味がありませんでした。
 ───────────────────────────────────────  ■題名 : Re:ごめんなさい。  ■名前 : miki  ■日付 : 02/10/10(木) 11:45  -------------------------------------------------------------------------
   本当ですね!
昨日はPW有りのシートの保護が出来たのが嬉しくてそこまで確認していませんでした…。
でも、ここまで出来ていればダイジョウブ!有難う御座いました。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 185