- ベストアンサー
Excelのオートフィルタ→シート保護→共有について
- Excel2000のブックを所内で共有で使用するためにマクロを入力しました。
- マクロを入力後、ブックを共有し、再度ファイルを開くと実行時エラーが発生しました。
- 共有により、エラーメッセージが表示されますが、マクロについて詳しくは分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1のmatsu_junです。 共有にすると、シートの保護ができなくなるのではなくて、シートを保護するかしないかの設定の変更ができなくなるということです。 0_03さんの利用方法が不明ですが、最初のソースをそのまま記載しているのであれば、特に開く人や状況によってオートフィルタの範囲や位置の変更はないものと考えますね。 以下は私自身は利用していないので、あくまでローカルの実験での範囲なのですが、マクロに記載していることを、あらかじめExcel上で設定しておけばよいのではないでしょうか? 一度共有を解除してから、まずは、皆さんに編集してほしいセル範囲をドラッグして右クリック、「セルの書式設定」にて「ロック」タブから、「ロック(L)」部分のチェックボックスをオフにします。次にオートフィルタの必要な列に対して、データ(D)-フィルタ(F)-オートフィルタ(F)にて、オートフィルタを設定します。ここまでは既にお済みとは存じます。次に、ツール(T)-保護(P)-シートの保護(P)にて、シートの保護ダイアログを表示させますよね。その際、ダイアログ下部にある、「このシート全てのユーザーに許可する操作(O)」欄を下にスクロールさせると、「オートフィルタの使用」という行がありませんか?そこにチェックをした上でシートを保護すれば、あとは再びブックを共有しなおせばよろしいかと存じます。 一度試してみてください。なお、当方Excel2002で実験してみましたので、その他のバージョンでの可否および操作方法については申し訳ありませんが把握しきれないことをお許しください。
その他の回答 (1)
- matsu_jun
- ベストアンサー率55% (146/265)
勉強のため、例に挙げたマクロを日本語に訳してみます。 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の仕様のようです。 逆に、シートの保護をかける(編集を不可能にする)のであれば、「ファイルの共有」を行う必要もないと思われます。 サーバーかどなたかのパソコンの共有フォルダか、どこにこのファイルを置くのかは分かりませんが、見たい人から見える場所に「ファイルの共有」を解除した上で、このファイルを置くだけでよいのではないかと思います。
お礼
回答ありがとうございました。 共有をするとシートの保護が出来ないのですか。 実は入力セル以外のデータは触れないように保護をかけたいのですが、どうすればよろしいでしょうか? ファイルはサーバーの共有フォルダに保存してあります。 膨大なデータ入力を行うので一人では無理があり、 皆さんにお手伝いして頂こうと思いまして、共有にしたかったのです。 再び質問になってしまいましたが、他に方法があれば 助言頂けますでしょうか? よろしくお願いいたします。0_03
お礼
matsu_jun様 返信が遅くなり大変申し訳ございません。 今日会社に行って一度試して見ます。 また分からない事があった際には ぜひよろしくお願いいたします。0_03
補足
matsu_jun様 会社に来てから教えて頂いた方法をやってみました。 当社ではExcel2000と2003が混同しており、 2003では教えて頂いた方法で出来たのですが、 2000では出来ませんでした。 共有のみで入力していく事になりましたが、 教えて頂いて本当にありがとうございました。0_03