• 締切済み

エクセル シート保護された共有ファイルのマクロ実行

nayuta_lotの回答

回答No.2

こんにちは まずセルの保護について、おさらいですが、セルを保護するためには 2段階の処理が必要です。 1つ目は、保護したいセルを選択して。セルの書式から保護タブを 開き、ロックにチェックを入れます。 ただし、この段階では、まだセルは保護されません。 次にメニューのツールから保護を行ってはじめて、チェックが入って いるセルのみ、保護されます。 チェックを入れていないセルは入力が可能です。 マクロを実行したときに保護を解除せずに、保護された部分の編集は できません。 【保護の設定について】 保護したい場所が多ければ、全てのセルを選択してロックをしてから 保護を解除したいセルのロックを外す。 逆に保護したい部分が一部なら、全てのセルを選択してロックを外し てから、保護したいセルをロックする。 とすれば、漏れる可能性が減ります。 保護の設定ができたら保護を掛けます。 PassWordは省略可能です。 以上を踏まえて、セルの関数を消してしまう人に対する対策でしたら、 最初に保護を掛けておき、マクロの実行の最初に保護解除、実行が終了 したら再び保護をするというのがいいかと思います。 マクロの記録でやってみるとわかると思いますが、下記にその内容を 記載しておきます。 ※password:="AAA"は記録されません。 保護の解除の仕方 ActiveSheet.Unprotect Password:="AAA" 保護の仕方 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="AAA" Password:="AAA"のAAAを任意の文字に変更してください。 以上、ご参考まで^^

night2008
質問者

お礼

ご回答誠にありがとうございます。 「ロックにチェック→シートの保護」については承知しております。 >ActiveSheet.Unprotect Password:="AAA" >ActiveSheet.Protect DrawingObjects:=True, Contents:=True, >Scenarios:=True, Password:="AAA 上記のマクロも過去ログを参考にさせて頂き、保護されたシートでマクロを実行したところうまくいきました。(保護する際には必要な「許可する操作」にはチェックします) 問題はこの後です。その状態から共有ブックして同じマクロを実行すると "実行時エラー"1004:worksheetクラスのUnprotectメソッドが失敗しました。"というエラーが出てしまいます。 無理なのかも・・・。 最悪、四角形を透過100%にして数式を含むセルの上にかぶせておきます。かっこ悪いけどみんなには分からないし、これで一応セルを直接クリックはできなくなります。

関連するQ&A

  • シートの保護をしたり、しなかったりはマクロで可能?

    VBAでマクロを使って一部セルの変更をしているのですが このマクロを実行しない(ボタンを押さない)場合は、シートのセルが 変更できないようにシートの保護をかけています。 この状態で、マクロを実行すると 実行時エラー '1004' FontクラスのNameプロパティを設定できません。 と表示されます。 マクロ時は書き換えできて、マクロが実行していない場合、シートの書き換えができないようにしたいのですが、どのようにすればよいのでしょうか?

  • エクセルのシート保護をマクロで自動化したい!

    EXCEL2000で仕事をしていますが、シート保護をマクロで自動化したいんです。それもパスワード入力を求めるメッセージボックスが表示されるような形で・・・ ツール→保護→シートの保護 ということでシート保護が出来るのは当然知っていますが、複数の人間が共有して使うファイルということのあり、作業後閉じるときに忘れる可能性大なので、コマンドボタンで簡単にしたい。パスワード付というのは無理なんでしょうか?

  • 共有ファイルにあるマクロの同時実行について

    VBAマクロつきのエクセルファイルを共有ネットワーク上のフォルダに置く予定ですが、複数ユーザが別々のPCでそのファイルを開き、まったく同時にマクロを実行したらどうなりますか? 何かエラーが出るのでしょうか。Err関数ではそのようなエラーコードは見当たらなかったのですが・・・。 ちなみにそのマクロの内容は以下のとおりです。 ・エクセルシート上のコマンドボタンを押すと、自分自身のコピーファイルを作成し、そのコピーファイルを指定されたWebサイト上に保存する。 ご存知の方、回答よろしくお願い致します。

  • エクセルVBAの実行保護について教えてください。

    エクセル2000VBAで構文を複数作り、シート上にボタンを配置し実行させたいと思います。 (パスワードで保護させて、VBAの構文は管理者以外に見えないようにしました) その複数のマクロの中には、実行させたくないものもあります。(管理者のみが行うマクロ) シート上のボタンで配置したもののみ実行可能にして、「ツール」-「マクロ」から誰でも実行させないような方法を教えてください。 つたない説明で申し訳ありませんが、ご理解いただけたでしょうか? よろしくお願い致します。

  • Excelでsheetに保護をかけたらマクロは動きませんか?

    マクロ初心者です。 Excelでsheetに保護をかけてしまうとマクロは動か なくなるものなのでしょうか?ちなみに、マクロで コピー等の処理を行うセルのロックは解除しておいた のですが…。 sheetを2つ作って、一方の保護付きsheetに情報を 入力をしておき、もう一方の保護無しsheetに同じ 情報をコピーした上でマクロ処理させる、という 方法は考えたのですが、もっとスマートな方法を ご存知でしたら教えて下さい。よろしくお願い致し ます。

  • EXCELマクロのボタンについて教えて下さい

    マクロを実行したいファイルがあり、複数のシートがあります。 今後も多様するものなので、メニュー用のシートを作り、そこにマクロの実行ボタンを何種類か置きたいと思っています。 メニュー用のシートを作り、ボタンにマクロを登録しても、そのシート上でしか動きません。 他のシートのデータを操作することはできないのでしょうか? よろしくお願いします。

  • マクロを実行するとシートの保護が解除?

    たとえば。。。 (A1)に任意の数値を入れます。 (A2)には関数を入れます。 こういうレポートを作ったとき、(A2)にロックをかけて上書きされないようにしました。 A1の数値のみを削除するマクロを実行します。 頭の中では、シートの保護はマニュアルで解除しない限り有効だとおもっていたんですが、このマクロを実行するたびに勝手に解除されることに気づきました。 これはどうしてでしょうか?まさか、パスワードを決めずにシートの保護を設定したことは関係ないと思うんですが。 わかりにくくてすみません。

  • シートの保護でデータ追加が出来ない Excel

    表の項目で関数を入れているなど、データ入力以外さわらせたくない項目があるため、 シートの保護を設定するとデータの追加(新しいレコードの追加)が出来なくなりました。 (表をリストに変換しています。またセルの設定で「ロック」は外しています) またマクロも実行時にエラーになります。 「シートの保護」の「~許可する操作」の設定をいろい変えてみたのですがうまくいきません。 リストへレコード追加やマクロ実行時が出来て、ユーザーには関係のない項目を触らせなくする方法は無いでしょうか。 エクセル2003です。

  • エクセル2010のシート保護マクロについて

    すべてのシートを保護してくれるマクロを教えてほしいのですが、機能として 「ロックされていないセル範囲の選択」と「セルの書式設定」の二つの機能を許可したものを教えてください。また、逆にすべてのシートの保護を解除するマクロもお願いします。 エクセル初心者のため、見当はずれなことを聞いていたら申し訳ありませんが、いくら探しても上記のようなものを探すことができず、、、。シートが80ほどあるもので、困り果てています。 よろしくお願いします。

  • エクセルマクロでファイル名やシート名変更できない

    エクセルは初心者なのでマクロを自動記録して作成しています。 少しづつ動作を小分けにして記録して、まとめてボタンで連続実行させるようにしました。 (1)作成途中で失敗したら最初からの作業になると思い、 ある程度進んだら何度かファイルのコピーを作成して進めていました。 ある程度完成した時点でファイル名が「○○○4~コピー~」の様な名前だったので、正式に名前を決めて変更したらマクロの実行が出来なくなりました。(元の名前に戻すと実行可能) (2)またシートも複数のシートに跨って参照するようなマクロです。 シート名を分かりやすい名前に変更したらこの場合もマクロ実行できなくなりました。 (3)コピーしたファイルもマクロ実行できないものがあります。 コピーしたファイルはマクロ実行できないのでしょうか? (4)ファイル作成途中で何かの変更が生じて列や行の挿入を行った場合、 特定のセルを参照して計算するマクロは実行できなくなるのでしょうか? その場合、簡単に修正する方法はありますか? 初心者にも分かるような回答をよろしくお願いいたします。