こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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'オブジェクト

とメッセージが出ます。
共有にすることにより、このメッセージが出ると思われますが、
恥ずかしながらマクロの事は全く分かりません。
ご教授よろしくお願い致します。

投稿日時 - 2005-02-10 17:41:51

QNo.1212034

困ってます

質問者が選んだベストアンサー

#1のmatsu_junです。
共有にすると、シートの保護ができなくなるのではなくて、シートを保護するかしないかの設定の変更ができなくなるということです。
0_03さんの利用方法が不明ですが、最初のソースをそのまま記載しているのであれば、特に開く人や状況によってオートフィルタの範囲や位置の変更はないものと考えますね。

以下は私自身は利用していないので、あくまでローカルの実験での範囲なのですが、マクロに記載していることを、あらかじめExcel上で設定しておけばよいのではないでしょうか?
一度共有を解除してから、まずは、皆さんに編集してほしいセル範囲をドラッグして右クリック、「セルの書式設定」にて「ロック」タブから、「ロック(L)」部分のチェックボックスをオフにします。次にオートフィルタの必要な列に対して、データ(D)-フィルタ(F)-オートフィルタ(F)にて、オートフィルタを設定します。ここまでは既にお済みとは存じます。次に、ツール(T)-保護(P)-シートの保護(P)にて、シートの保護ダイアログを表示させますよね。その際、ダイアログ下部にある、「このシート全てのユーザーに許可する操作(O)」欄を下にスクロールさせると、「オートフィルタの使用」という行がありませんか?そこにチェックをした上でシートを保護すれば、あとは再びブックを共有しなおせばよろしいかと存じます。

一度試してみてください。なお、当方Excel2002で実験してみましたので、その他のバージョンでの可否および操作方法については申し訳ありませんが把握しきれないことをお許しください。

投稿日時 - 2005-02-13 06:42:24

補足

matsu_jun様
会社に来てから教えて頂いた方法をやってみました。
当社ではExcel2000と2003が混同しており、
2003では教えて頂いた方法で出来たのですが、
2000では出来ませんでした。

共有のみで入力していく事になりましたが、
教えて頂いて本当にありがとうございました。0_03

投稿日時 - 2005-02-14 10:36:57

お礼

matsu_jun様
返信が遅くなり大変申し訳ございません。
今日会社に行って一度試して見ます。

また分からない事があった際には
ぜひよろしくお願いいたします。0_03

投稿日時 - 2005-02-14 06:51:37

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

勉強のため、例に挙げたマクロを日本語に訳してみます。

Private Sub Workbook_Open()
「このワークブック(ファイル)が開かれた時に以下を実行します」

Dim Sh As Worksheet
「ワークシート全体を「Sh」と名付けます」

For Each Sh In Worksheets
「shの全てのワークシートについて、以下の操作をします」

Sh.EnableAutoFilter = True
「オートフィルタを利用可能にします」

Sh.Protect UserInterfaceOnly:=True
「画面からのシート変更に対して保護をします。(画面からの変更を禁止します)」

Next Sh
「上2行の操作をshの全てのワークシートについて適用します。」
( For ○○ で始まった部分は、必ず Next ○○ で閉じます )

End Sub
「ワークブックオープン時の処理を終了します」

さて、ファイルの共有を行うと、シートの保護・非保護の設定ができなくなります。
これは残念ながらExcelの仕様のようです。
逆に、シートの保護をかける(編集を不可能にする)のであれば、「ファイルの共有」を行う必要もないと思われます。

サーバーかどなたかのパソコンの共有フォルダか、どこにこのファイルを置くのかは分かりませんが、見たい人から見える場所に「ファイルの共有」を解除した上で、このファイルを置くだけでよいのではないかと思います。

投稿日時 - 2005-02-11 03:31:44

お礼

回答ありがとうございました。
共有をするとシートの保護が出来ないのですか。

実は入力セル以外のデータは触れないように保護をかけたいのですが、どうすればよろしいでしょうか?

ファイルはサーバーの共有フォルダに保存してあります。
膨大なデータ入力を行うので一人では無理があり、
皆さんにお手伝いして頂こうと思いまして、共有にしたかったのです。

再び質問になってしまいましたが、他に方法があれば
助言頂けますでしょうか?

よろしくお願いいたします。0_03

投稿日時 - 2005-02-11 13:30:37

あなたにオススメの質問