dポイントプレゼントキャンペーン実施中!

こんちには
エクセル関連の過去の質問を見ると、単に保護されたシートではマクロを実行する方法かあるようですが、保護された共有ファイルでマクロを実行するにはどうしたらよいでしょうか?(保護された共有ファイルでも実行可能なマクロもあります)
今はその方法が分からないので、共有ファイルを保護なしでマクロを実行しています。1つのファイルに複数のマクロがありボタンで操作できるようにしていますが、時々セルの中の関数を消してしまう人がいるので、保護したいと考えています。

A 回答 (3件)

No1です。


>問題はこの後です。その状態から共有ブックして同じマクロを実行すると
>"実行時エラー"1004:worksheetクラスのUnprotectメソッドが失敗しました。"というエラーが出てしまいます。

>無理なのかも・・・。
実は無理です。ブックの共有を設定した時点でシートの保護と解除は出来なくなります。
ブックの共有の設定前に 数式のセルのみ保護をかけるしかないと思います。
    • good
    • 2
この回答へのお礼

ありがとうございました
ほかの方法を考えます。

お礼日時:2008/07/13 07:12

こんにちは


まずセルの保護について、おさらいですが、セルを保護するためには
2段階の処理が必要です。

1つ目は、保護したいセルを選択して。セルの書式から保護タブを
開き、ロックにチェックを入れます。
ただし、この段階では、まだセルは保護されません。

次にメニューのツールから保護を行ってはじめて、チェックが入って
いるセルのみ、保護されます。
チェックを入れていないセルは入力が可能です。

マクロを実行したときに保護を解除せずに、保護された部分の編集は
できません。

【保護の設定について】

保護したい場所が多ければ、全てのセルを選択してロックをしてから
保護を解除したいセルのロックを外す。

逆に保護したい部分が一部なら、全てのセルを選択してロックを外し
てから、保護したいセルをロックする。

とすれば、漏れる可能性が減ります。
保護の設定ができたら保護を掛けます。 PassWordは省略可能です。

以上を踏まえて、セルの関数を消してしまう人に対する対策でしたら、

最初に保護を掛けておき、マクロの実行の最初に保護解除、実行が終了
したら再び保護をするというのがいいかと思います。

マクロの記録でやってみるとわかると思いますが、下記にその内容を
記載しておきます。 ※password:="AAA"は記録されません。

保護の解除の仕方
ActiveSheet.Unprotect Password:="AAA"

保護の仕方

ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True, Password:="AAA"

Password:="AAA"のAAAを任意の文字に変更してください。

以上、ご参考まで^^
    • good
    • 0
この回答へのお礼

ご回答誠にありがとうございます。
「ロックにチェック→シートの保護」については承知しております。

>ActiveSheet.Unprotect Password:="AAA"
>ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
>Scenarios:=True, Password:="AAA

上記のマクロも過去ログを参考にさせて頂き、保護されたシートでマクロを実行したところうまくいきました。(保護する際には必要な「許可する操作」にはチェックします)
問題はこの後です。その状態から共有ブックして同じマクロを実行すると
"実行時エラー"1004:worksheetクラスのUnprotectメソッドが失敗しました。"というエラーが出てしまいます。

無理なのかも・・・。
最悪、四角形を透過100%にして数式を含むセルの上にかぶせておきます。かっこ悪いけどみんなには分からないし、これで一応セルを直接クリックはできなくなります。

お礼日時:2008/07/13 00:17

ブックの共有の設定の事でしょうか?


ブックの共有を設定しておいてもマクロは実行できます。
但し ブックの共有を設定した状態では マクロ(VBA)の編集は出来ません。
>時々セルの中の関数を消してしまう人がいるので、保護したいと考えています。
シート全体を保護するのではなく関数と入れている部分のみ保護すれば
大丈夫ではないでしょうか。
操作はどれが簡単なのか わかりませんが
1 シート全体を選択 「セル」 「書式」 で 保護のタブで ロックの チエツクを外す。
2 関数の部分を選択して 同様にして 保護の ロックに チエツクをいれる。
3 シートを保護する。
これでシートの保護をしたい部分にだけ編集ができなくなります。
    • good
    • 1
この回答へのお礼

ご回答誠にありがとうございます。

>ブックの共有の設定の事でしょうか?
ご指摘の通りファイルの共有ではなくブックの共有です。
申し訳ありません。

現状は上記のこの回答へのお礼のとおりです。
もうちょっとやってみて、だめなら四角形でいきます。

お礼日時:2008/07/13 00:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A