EXCEL シート保護でマクロが正常動作しない

このQ&Aのポイント
  • EXCELのシート保護をかけるとマクロが正常に動作しない問題が発生しています。
  • シート保護を解除するとマクロが再び使用できるが、再度保護すると使用できなくなる現象が起きます。
  • シート保護とマクロの相性に問題があり、保護中はマクロが制限されるため、正常に動作しない可能性があります。
回答を見る
  • ベストアンサー

EXCEL シート保護するとマクロが正常動作しない

こんにちは。 よく使うコピー&貼り付けを、マクロにして、ボタンの設定をしました。 他人に計算式をいじられたくないので、シート保護をかけています。 が、そのマクロを一度使うと、計算式が正常にコピーされません。 そこ自体の計算式は非常に単純なものなのですが・・・ 例) A1 B1+C1 A3 B3+C3 A5 B5+C5 (上下でセルを結合させています) A20 B20C+C20 (A21とA22でセルを結合させています) マクロ 1)「A1:A6」コピー&値貼り付け&コピー 2)A8:A13 貼り付け ※上記もそれぞれ上下2セルを結合しています。 3)「A20」コピー 4)「A1:A6」へ貼り付け ※消えた計算式を復活 これだけのことです。 ですが、シート保護を外すと何度も繰り返し使えますが、 保護した途端一度きりになってしまいます。 一体に何に問題があるのでしょうか?

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

保護されているセルは、マクロでもそのまま貼り付けなどの「変更」はできません コピー&ペーストを行う前に  ActiveSheet.Unprotect で一旦シート保護を解除し、一連の処理が終わってから  ActiveSheet.Protect Contents:=True で再度保護をかけ直す必要があります

mark-c
質問者

お礼

「ActiveSheet.Protect UserInterfaceOnly:=True」を使えば良いみたいです。 無事できました。 ありがとうございました。

mark-c
質問者

補足

ありがとうございます。 ですが、この方法だと保護解除のパスワードを聞かれますよね? 他の人も使う可能性があり、パスワードは告知したくないのですが、 パスワード入力が不要になる方法はないものでしょうか?

関連するQ&A

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

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

  • シートを保護したらマクロがきかない?

    マクロもクエリも全くの初心者です。 仕事で他人が作成したエクセルデータを加工しなければなりません エクセルです 例えばSheet1上で、  セルA1 マクロ設定されており、クリックするとUserFormウィンドウが      開き、入力値を選択できるようになっている      →保護しておきたい  セルB1 文字列が入力されている      →保護の対象外にしたい。  セルC1 数式が入力されている      →保護しておきたい という状況で、 まずやってみた方法は「セルの書式設定」→「ロック解除」などを した上でシート保護をかけたのですが、セルA1のマクロも無効に なってしまいます。 個人的には入力規則等で対応できるかと思うのですが、 マクロの解除は不可能と(会社から)指示がありました。 マクロは不勉強ですので、何とか簡単に変更したいものなのですが やはり VBAコマンドでの(Activesheet.Unprotect?) 変更が必要になるのでしょうか? この機会にVBAに触れておくべきと考え質問さえていただきました。 そもそもアラ40の私に理解できうるものか不安を感じますが・・(汗) EXCELは2007だったと思います。(Verによって異なりますか?) 大変無粋ですが、初心者向きにご回答いただければ幸いですm(__)m

  • マクロ(エクセルシートコピー先)に関して

    分かりましたら教えてください。 A.xlsのシートBを、新しいブックにコピーし移動するときに、そのブック名が、常にそのシートBのセルC3に入力されている文字の名前にするようにマクロを組みました。(....Filename:Range("C3")としています。) さらにC.xlsのシートDもその新しいブックにコピー移動させるマクロを追加したいのですが、コピー先をどのように指定すればいいのでしょうか。。

  • 複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

    ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • エクセル あるシートから別シートへ貼り付け

    どなたかお助け下されば、大変ありがたく存じます! エクセルに関する質問です。 コピー元エクセルシートのセル(B2、B3、B4、B5・・・B100)に数値が入力されています。 その値を、別シートのセル(C2、C25、C48、C71、・・・C2256、C2279)に貼り付けたい場合、 何か良い方法は無いものでしょうか。 貼り付け先となるセルは、等差数列的に決まっており、 フィルタでその指定セル(C2、C25、C48・・・C2256、C2279)を抽出することも可能です。 単純に、貼り付け先セルへ、C2セル「=コピー元シート!$B2」と入力すると、 C25「=コピー元シート!$B25」、C48「=コピー元シート!$B48」・・・となってしまい、 うまく貼り付けることが出来ません。 理想は、 C2セル「=コピー元シート!$B2」、C25「=コピー元シート!$B3」、 C48「=コピー元シート!$B4」、・・・、C2279「=コピー元シート!$B100」としたいのです。 (コピー元)→(貼り付け先) B2 → C2 B3 → C25 B4 → C48 B5 → C71 B6 → C93 ・・・ B99 → C2256 B100 → C2279 何か良い方法があればお教え願えますでしょうか。 どうかよろしくお願い申し上げます!!

  • エクセル マクロ コピー→シート保護解除→貼付

    いつもお世話になっております。 マクロ勉強中の者です。 2つの別ブックのシート(互いに任意)を同時に開いている前提での作業です。 (1)あるブックのシート(任意)は,シート保護が施されています。このシートのシート保護の解除をします。 (2)(1)で示したブックとは別のブックのシート(任意)に,次のようなマクロを設定してあり,指定した範囲のコピーを行います。 Sub コピー() コピー Macro Range("E6:AI73").Select Selection.copy End Sub (3)次に,(1)で示したブックのシート(任意)に次のようなマクロを設定してあり,先ほどコピーした内容を貼り付けます。 Sub 貼り付け() Range("E6").Select ActiveSheet.Paste  ActiveSheet.Protect End Sub (4)(1)で示したシートには,(2)で行ったコピーの内容を貼り付け,シート保護された状態で作業が終わります。 この一連の作業の中で,(1)の作業を省けないかと考えています。つまり, 別ブックのシートを2枚開いている状態で, ◎あるブックのシートの内容をコピー(範囲指定あり) →◎別のブックのシートに,シート保護解除して(2)でコピーした内容を貼り付け,(セル指定あり)シート保護して終了 (3)で示したマクロに ActiveSheet.Unprotect を付け加えて実行してみたのですが,うまくいきません。エクセルの性格上,「貼り付け」の前にシート保護解除の動作が入ることで,コピーした内容が失われ?て貼り付けることができないのかな?と感じているのですが,どなたかご教授いただけると嬉しいです。 エクセルのバージョンは,2016になります。

  • エクセルシートの保護、マクロについてお願いします!

    はじめまして。 マッサージ店の集計表をエクセルで作りました。 いろいろなスタッフが入力する為、計算式を入れたセルを消してしまったりして、 集計が狂ってしまうので困っています。 エクセル初心者なので説明がわかりにくいと思いますが、よろしくお願いいたします。 内容は、まずはシートごとに 集計、プルダウン用、1日、2日・・・31日 と分かれています。 日付シートにはプルダウンでスタッフや、コースなど選択できるようにしてあります。 集計、プルダウン用シートから各日付シートにリンクしています。 日付シートで入力するセルはセルの保護のロックを解除して、シートの保護をすれば大丈夫なのですが、 力の項目も結構数があるので、相当時間がかかりそうなのです。 マクロなど使い一気にまとめて、セルの保護のロック解除、シートの保護ができないものなのでしょうか? 説明が不十分でしたら、できる限り説明させていただきます。 是非ともよろしくお願い致します。

  • エクセル マクロ

    エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

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

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

  • エクセルのマクロについて教えてください

    シートが3つあります。Aシートはデータが打ち込んであり、Bシートは計算を行い、Cはその結果を返します。今、Aシートの各データには頭に通し番号がふってあり、Cシートの入力エリアにその番号を打つと、vlookupでAシートのデータの中身を引っ張ってきて、それでBシートにて計算が行われています。で、その結果が再びCシートに返されます。 ところで、その計算結果をAシートの該当データに貼り付けていきたいのですが、いちいちCシートでコピー、Aシートの該当行に形式を選択して貼り付け、とやっているのですが、これをCシートで入力した通し番号とAシートの通し番号を突合して一致したところの○番目のセルに結果を貼り付ける、といったマクロは可能でしょうか。教えてください。

専門家に質問してみよう