[[20140730103027]] 『シートの保護で・・・』(yusuke) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートの保護で・・・』(yusuke)

 お世話になります。 “月集計”というシートに マクロのボタンを表示していて、
それをクリックすると、月集計のファイルの空白以外のセルが、“実績”のシートに
表示されます。
   
  Sub 実績()
'
' 実績 Macro
' マクロ記録日 : 2010/4/25  ユーザー名 : toshiaki
'

'

    Rows("6:6").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=34, Criteria1:="<>"
    Range("A1:AJ1149").Select
    Selection.Copy
    Sheets("実績表").Select
    Range("A1").Select
    ActiveSheet.Paste
End Sub
Sub 元に戻す()
'
' 元に戻す Macro
' マクロ記録日 : 2010/4/25  ユーザー名 : toshiaki
'

'

    Cells.Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Sheets("月集計").Select
    Selection.AutoFilter
End Sub

 月集計のシートの保護でパスワードを設定すると、ファイルを開いた時に、パスワードの入力画面が出てきます。 
そこで、パスワードを入れてしまうと、保護の解除が出来てしまいますので、困ります。
何分にも、初心者の老人ですので、分かりやすい回答をお願いします。
 

< 使用 Excel:Excel2003、使用 OS:Windows7 >


 なかなか回答が付きませんね。

 >月集計のシートの保護でパスワードを設定すると、ファイルを開いた時に、パスワードの入力画面が出てきます。 
 この部分ですが、「シートの保護」で「ファイルを開いたとき」にパスワード入力画面は普通は出ませんよね?
 そこが再現出来ないので、回答出来ないのではないでしょうか。

 ご確認いただきたいのが、ThisWorkBookにWorkBook_Openイベントなどございませんか?
 また、オートフィルタでしたら、シート保護で「このシートのすべてのユーザーに許可する操作」で
 「オートフィルタの使用」にチェックが入ればシート保護がかかったままでも上記コードは実行でき
 ます。

(稲葉) 2014/07/30(水) 13:28


  稲葉さん ありがとうございます。
「オートフィルタの使用」には、チェックが入っています。

 WorkBook_Openは、こうなっています。
 Option Explicit

 Private Sub Workbook_Open()
    Dim wsNum
    For Each wsNum In Array(2)
        With Worksheets("月集計")
            .Unprotect ("1601")
            .Protect UserInterfaceOnly:=True
        End With
    Next
    ActiveWindow.ScrollRow = 1
 End Sub
(yusuke) 2014/07/30(水) 14:39

 ブックを開くと月集計シートを1601というパスワードで解除し、
 パスワードなしでユーザーインターフェースオンリーのシート保護をかける

 誰かがシートの保護を解除する
 誰かがマクロと違うパスワードでシートの保護を掛ける

 次回開いたときに、パスワードが違うため、パスワード入力のダイヤログが出る

 こういうことでいいのですかね?

 でしたらWorkbookopenイベントのプロテクトのところで、解除できないようにパス
 ワードを設定することである程度回避できるのではないでしょうか?
Private Sub Workbook_Open()
    With Worksheets("月集計")
        .Unprotect _
            Password:="1601"
        .Protect _
            Password:="1601" _
            , UserInterfaceOnly:=True
    End With
End Sub

(稲葉) 2014/07/30(水) 16:48


 ありがとうございます。
 思うようになりました。  あつかましいと思いますが、もうひとつ教えてください。
 範囲の編集許可を設定していますが、そのセルを編集できないのですが…
 よろしくお願いします。
(yusuke) 2014/07/30(水) 18:47

 >範囲の編集許可を設定
 これは「範囲の編集を許可」という機能を使った場合の話ですか?
http://www.wanichan.com/pc/excel/2003/09/382.html

 それとも、「セルの書式設定」で「保護」タブの「ロック」を解除した時の話ですか?
http://support.microsoft.com/kb/880349/ja

 いずれにせよ、再現が出来ません。
 1から10まで自分の判断で省略せず、再現出来る手順を教えてください。
(稲葉) 2014/07/31(木) 08:41

 説明が旨くできなく申し訳ないです。
 「範囲の編集を許可」は、設定できてます。
 罫線 色付け テキストボックスは、保護の設定直後は使用できますが、セルの結合ができません。
 再起動後は、罫線 色付け テキストボックスなどはグレーになってしまいます。
 勿論、セルの結合はできません。  どこかで、保護の設定を間違ってるのでしょうか?
 よろしくお願いします。 

(yusuke) 2014/07/31(木) 14:27


古いExcelでは、保護機能が充実していないので、シートを保護してしまうと、セルの結合等はできなくなります。
保護を解除した状態で、予め結合しておきましょう。

なお、2007以降かな? 現状のExcelでは、保護するかどうかのチェック項目が大幅に増えていて、
セルの書式設定を許可するかどうか選択できるようになっています。
(???) 2014/07/31(木) 14:47


 ???さん フォローありがとうございます。
 2003は持っていないため検証できませんでした。

 尚、2007で検証した結果を報告します。
 セルの書式(色付け)は「シートの保護」機能の「このシートのすべてのユーザーに許可する
 操作」で「セルの書式設定」にチェックを入れない限り出来ませんでした。
 またセルの結合はシートが保護された状態では出来ません。

 >保護の設定直後に使用出来る
 こちらについては再現出来ないので、分かりません。

 2003で使えるか分かりませんが、
 色とテキストボックスがShapeだとして、このようにしたらいかがですか?
Private Sub Workbook_Open()
    With ActiveSheet
        .Unprotect _
            Password:="1601"
        .Protect _
            Password:="1601" _
            , UserInterfaceOnly:=True _
            , AllowFormattingCells:=True _
            , DrawingObjects:=False _
            , contents:=True '★←これをFalseにすることで結合もできますが、保護の意味が無くなりませんか?
    End With
End Sub
(稲葉) 2014/07/31(木) 14:57

 稲葉さん ???さん ありがとうございます。

 もう2003の時代じゃないようですね。 
 保護を解除して結合するのがいいですね。

 いろいろと、お爺にありがとうございました。
 また、よろしくお願いしますね。

 本当にありがとう
(yusuke) 2014/07/31(木) 15:15

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.