• 締切済み

[EXCEL]保護されたシートでオートフィルタ利用可能にしたいのですが

いかのURLにも同じような質問があり、 http://oshiete1.goo.ne.jp/qa2550996.html それにしたがって、シート保護でもオートフィルタ可能にするための VBA記述を行いましたが、オートフィルタが利用可能になりません。 シートの保護はできているようですし、エラーもでません。 記述したコードは以下になります。 Sub Workbook_Open()   Dim Sh As Worksheet   For Each Sh In Worksheets    Sh.Unprotect Password:="fukuri"    Sh.EnableAutoFilter = True    Sh.Protect Password:="fukuri", userInterfaceOnly:=True   Next Sh End Sub なにか、不足している記述があるのでしょうか? もし、わかる方がいらっしゃったら是非アドバイスいただけないでしょうか? 私自身、VBAを利用するのがはじめてで勉強不足にもかかわらず 大変恐縮ですが、ご回答いただければ幸いです。 宜しくお願いいたします。

  • fu_yo
  • お礼率50% (1/2)

みんなの回答

  • Musaffah
  • ベストアンサー率36% (37/101)
回答No.2

やはりそう簡単なものじゃありませんでしたか。 ちなみに当方の環境で上記VBAを実行したところ、ちゃんと動作してますね。(2003ですがきちんと動きました。) 1)適当に表を作成し、オートフィルタを設定。 2)シートを保護し、オートフィルタが使用不可であることを確認。 3)ファイルを保存終了。 4)ファイルを再度開く。 もしかして、オートフィルタをかけていない状態でファイルを保存したりていませんか?

  • Musaffah
  • ベストアンサー率36% (37/101)
回答No.1

ご使用のExscelは2000ですよね? (2003でしたらシート保護オプションで設定可能ですので。) 当方Excel2003ですので推測ですが、 For Each Sh in ThisWorkbook.Worksheets ("ThisWorkbook"が抜けてる) でちゃんと動いたりしませんか?

fu_yo
質問者

お礼

環境はExcel2000です。情報の不足申し訳ありません。 アドバイスの通りThisWorkbookを追加しましたが やはりうまく動作しませんでした。 ご回答、本当にありがとうございました。

関連するQ&A

  • [Excel]保護されたシートのマクロによるオートフィルタ有効設定について

    先日、こちらのカテゴリでお世話になった者です。 ご質問に関して、前記事の参照が必要となるため、以下に記載致します。 【参照元】http://okwave.jp/qa2538402.html 参照元のご回答を元に、無事商品管理のブックを完成させました。 その後、よく調べれば当たり前の事だったようなのですが、保護をかけると オートフィルタが動作しない事が分かりました。 私なりに調べて、ブックが開かれるタイミングで.EnableAutoFilterの記述が 必要になる事がわかり、参照元ANo.2内の中を以下のようにしてみました。 Private Sub Workbook_Open()   On Error Resume Next   With ThisWorkbook     .Unprotect Password:=BOOK_PASSKEY     .EnableAutoFilter = True '追記した行です     .IsAddin = False     .Saved = True   End With   If mApp Is Nothing Then Set mApp = Application   ' カスタムメニューをセルの右クリックに追加   Call AddCustomMenu End Sub これではエラーが出て動かず、更に調べました所、Excel2003などの比較的 新しいバージョンでは、保護の際にオートフィルタの有効無効のチェックが 出来る事がわかりました。 私はExcel2000なので、そもそもが記述をしても仕様上、保護下でのオート フィルタは無理なのでしょうか? Workbook_Open()のすぐ下の行に記述すると、1度保護を解除してかけ直せば 保護下でもオートフィルタが動くのですが、保存して再度ブックを開くと オートフィルタはまた無効になってしまいました。 今一歩と思うのですが、どうしてもうまく出来ません。 どのように追記をすればオートフィルタが可能になるでしょうか? または、無理なのでしょうか。 よろしくご教授下さい。

  • EXCEL VBAで条件付き保護について

    VBA初心者です、よろしくお願いします。 列Eでオートフィルタを使用可能と設定したいので、下記のようにしましたが、「シートの保護を設定」のステップを終えた後オートフィルタも使用できません。 「AllowFiltering:=True」でEXCELのオートフィルタの使用にチェックを入れた状態になると考えていましたが、思うようになりませんでした。 「シートの保護を設定」のステップがおかしいと思うのですが、わかりません。 教えてください。 ------------------------------------------------------ Private Sub Auto_Open() '一旦、シート保護を解除 ActiveSheet.Unprotect Password:="AAA" 列Hのデータを重複データを無視で列Oに抽出 セルH2は「入力規則-リスト」~列Oのデータを使用   ・   ・   ・ ' シート保護を設定 ActiveSheet.Protect Password:="AAA", UserInterfaceOnly:=True, AllowFiltering:=True End Sub

  • エクセルVBA 保護シート&フィルタ実行 全シート

    VBA超初心者です。 たくさんのシートのあるエクセルで、 シート保護後もフィルタを使用できるようにVBAを設定したいと思ってます。 (現在エクセル2000を使用してます) ネットで調べてVBAを設定してみました。 しかし下記のようにするとコンパイルエラーになってしまうのですが、 正しい方法を教えていただけると助かります。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean)   Application.CommandBars("Cell").Reset End Sub Private Sub Workbook_Open()   With Application.CommandBars("Cell").Controls.Add( _            Type:=msoControlButton, Before:=1, Temporary:=True)     .Caption = "AutoFilter"     .OnAction = "ThisWorkbook.filter"   End With   With Worksheets.Select     .Unprotect     .EnableAutoFilter = True     .Protect UserInterfaceOnly:=True   End With End Sub Private Sub filter()   On Error Resume Next   Selection.AutoFilter End Sub

  • エクセル保護でのグループ化、フィルタの使用方法

    エクセル2007でセルの保護の状態でグループ化の表示切替とオートフィルタを使用する方法を教えてください。 現在ファイル内で特定の列に保護をかけています。 保護により無効となってしまったグループかの表示・非表示はVBAで 切替られるようにしました。 Private Sub Workbook_Open() With Worksheets("シート名") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub 更に、オートフィルタを使用したいのですが、 保護を行う時に「オートフィルタの使用」にチェックを入れているのに 選択が不可能な状態です。 すべての条件を満たすにはどのような方法があるのでしょうか。 お分かりになる方がいられましたらご教授ください。

  • Excelで新たに追加するシートにも特別なシート保護を適用させたい。

    Excelで新たに追加するシートにも特別なシート保護を適用させたい。 VBAの知識がかなり浅いので質問や記述内容もつたないと思いますがご了承ください。 1つのワークブック内の全てのシートに対し、 シートの保護をかけつつ、グループとアウトライン設定だけは有効にしたいため、 ThisWorkbook内に以下のように記述しました。 Private Sub Workbook_Open() Dim x As Worksheet For Each x In ThisWorkbook.Sheets x.EnableOutlining = True x.Protect Password:="xxxxxxxx", UserInterfaceonly:=True Next End Sub これで既存のワークシートに対しては希望の動きをしましたが、 シートをコピー・複製して増やしていくため、 新たにコピーして追加されたシートに対しては機能しません。 追加したシートにもこの特別な保護が有効になるようにするには、どうしたらよいのでしょうか。 ご教授いただけるとうれしいです。 よろしくお願いいたします。

  • エクセルVBAでブック保護のUserInterfaceOnly:=Trueはダメ?

    エクセル2000です。シート保護ならUserInterfaceOnly:=TrueでVBAでの変更は可能ですが、Book保護にもそういう機能はないのでしょうか?試しに、 Sub TEST1() ActiveWorkbook.Protect Password:="merlion" , UserInterfaceOnly:=True End Sub とやってみましたが、エラーになってしまいました。(泣)

  • Excel2003でシート保護(オートフィルタ使用にはチェック)するとオートフィルタが使えない

    Excel2003を使用しています。 シートの保護でオートフィルタの使用にチェックを入れて保護をかけた後、データ - フィルタ - オートフィルタ が灰色に表示され、使用出来ません。 フィルタ設定 → シート保護だとオートフィルタを使用できます。 Excelの試用でオートフィルタの使用にチェックを入れて保護をかけても、保護後にはオートフィルタの設定は出来ないのでしょうか?

  • エクセル シート保護後コメントの挿入ができない

    win2000 officeXpです 以前こちらで、ファイルを開く時に 全シートの保護を行うマクロを教えたいただいたのですが、セルへのコメントの挿入ができなくなりました。 できる方法があればご教授ねがいます。 以下はその際教えていただいたマクロです。 Private Sub Workbook_Open() Dim sh As Worksheet For Each sh In Worksheets sh.EnableOutlining = True sh.Protect UserInterfaceOnly:=True Next sh End Sub

  • 下記のVBAを他のワークシートにも適用する方法?

    下記のVBAを他の同じエクセルファイル内の他のワークシート(Sheet2,Sheet3,Sheet4)にも反映するためにはどのようにしたらよろしいでしょうか? 現在書きVBAを本ワークブックという箇所に貼り付けております。 お手数ですがご教示いただきます様お願いいたします。 Private Sub Workbook_Open() With Sheets("Sheet1") .EnableOutlining = True .Protect Password:="****", UserInterfaceonly:=True End With End Sub

  • Excelのオートフィルタ→シート保護→共有について

    Excel2000のブックを所内で共有で使用するのに 下記サイトのマクロを入力しました。 http://kiyopon.sakura.ne.jp/situmon/index.htm Private Sub Workbook_Open() Dim Sh As Worksheet For Each Sh In Worksheets Sh.EnableAutoFilter = True Sh.Protect UserInterfaceOnly:=True Next Sh End Sub 入力後ブックの共有を行い、一度閉じて 再度ファイルを開くと 実行時エラー'1004':'Protect'メソッドは失敗しました:Worksheet'オブジェクト とメッセージが出ます。 共有にすることにより、このメッセージが出ると思われますが、 恥ずかしながらマクロの事は全く分かりません。 ご教授よろしくお願い致します。

専門家に質問してみよう