• 締切済み

プロジェクトロックしてあるシートをコピーしてもマクロを見られないようにしたい

プロジェクトロックしてあるブックのシート(シートモジュールにマクロあり)を他ブックへコピーした場合 コピー先のブックでそのシートモジュールに書いてあるマクロが見れてしまうのですが、プロジェクトロックを保持して(?)コピー先でもマクロを見られないようにする方法があればご教授願います。 よろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 ちょっと、それは、どう考えても無理な相談だかなっておもいます。好事家の間では、不可能とは言わないでしょうけれども、それ以上に、相手のブックのプロジェクトをロックしてまったら、まずいでしょうね。逆に、それをされたら、私なら相手の人に対してクレームをします。そういう行為には、万が一にも、受けた側のリスクを予想させられるからです。出来れば、KenKenSPさんのご指摘のように、イベントマクロならThisWorkbook 等にいれ、シートのマクロは付けないほうがよいと思います。シートのマクロというのは、働きとして、概ね特殊な位置にあるものだと思います。 >配布先でそのシートを配布先管理のブックへコピーするのですが、 >やっつけマクロが書いてあって恥ずかしいので見られないようにしたいのです。。。 問題は、ここでしょうね。見られても恥ずかしくないマクロにするか、動けばよいと、開き直るしかないのではありませんか。プロの方でも、全国に配ってから後でお客さんから指摘され、信じられないようなミスをしたコードを収拾することがあるくらいですから。 余計なお世話かもしれませんが……。

hxhgon
質問者

お礼

Wendy02さんありがとうございます! 私の作ったシートを配布先のブック(マクロ一切なし)にコピーし、 私のシートのマクロを利用してブック全体の集計等を行うのですが、 やっぱり私のシートだけをロックするのは無理のようですね・・・(;´Д`) ご指摘の通り、配布先にリスクは与えられないので ここは開き直ります(`・ω・´) 汚いソースがなんぼのもんじゃい!と。 どうもありがとうございました!

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

イベントプロシージャだけなら ThisWorkbook モジュールで 置き換え可能です。コントロールツールボックス等を使って いる場合は、フォームに置き換え、標準モジュールにコード を移すことでシートモジュール上のコードは消去できます。 が。。。。Σ(゜Д゜) そもそも、そのシートをコピーした後も VBA でプログラム した機能はそのまま残したいのですよね。。。? だとしたら、無理かなと思います。 最後の手段で、きれいにコードを整形してみては?(;・∀・)  # ↑回答になってないですね。すみません。  # 識者の回答を待ってみて下さい。

hxhgon
質問者

お礼

KenKen_SPさんありがとうございます! >そもそも、そのシートをコピーした後も VBA でプログラム >した機能はそのまま残したいのですよね。。。? そうなのです。。。 >だとしたら、無理かなと思います。 うう。。。やっぱりダメっぽいですね・・・(´;ω;`)ウッ… がんばってキレイなコードに直そうと思います。 おかげ様で腹をくくる決意ができました(笑) どうもありがとうございました!

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

ブックの保護機能を使って「シート構成」を保護してみては?

hxhgon
質問者

補足

迅速な回答ありがとうございます。 私の説明不足で申し訳ないのですが、 私が作ったシート(マクロつき)を配布し、 配布先でそのシートを配布先管理のブックへコピーするのですが、 やっつけマクロが書いてあって恥ずかしいので見られないようにしたいのです。。。 パスワードをかけて見れないようにするぐらいで十分なのですが、 コピー先のブックでも継続してシートのマクロを見れない状態にする方法はありませんでしょうか? お手数おかけしますが、よろしくお願いします。

関連するQ&A

  • あるシートのセルを、複数のシートにコピーするマクロ

    やりたい事としては、シート名「Sample」で指定した範囲のセルを、ブック内の複数シート(※)へコピーしたいです。 ※ 他にも同じ構成のブックがあり、そこでも汎用として使えるマクロが必要となっています。 各ブックでは、「Sample」というシート名は共通ですが、コピー先の複数シートのシート名は異なっています。但し、共通している部分としては、コピー先のシートを「Start」と「End」で挟んでいます。 シートの順序としては、  「Start」 「1」 「2」 「3」 「End」 「Sample」 のような構成で、各シートごとに1~3のシート名がばらばらです。 「Start」と「End」シートを活用して、シート名を指定せずにコピーする方法をご教示頂ければと思います。 宜しくお願い致します。

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

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

  • excelでマクロシートをコピーしたとき

    excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

  • マクロ ブックをマクロなしでコピー

    いつもお世話になっております。 マクロのことで 2つ教えて頂きたく書き込みをさせて いただきまいした。 よろしくお願いいたします。 ブックに何枚かシートがあり、 そのシートには全て同じマクロが入ってます。 このブックのシート全てを マクロを削除し新しいブックにコピーをしたいです。 また、コピーをする際に マクロがついているオブジェクト(ボタン) もとってコピーをしたいです。 自力で調べたのですが うまくわからずまた、こちらで質問 させていただきました。 よろしくお願いいたします

  • 【マクロ】シート名を参照してのシートコピー

    当方マクロ初心者です。 同じブックの中にシートが 1-A、1-B、2-A、2-B、3-A、3-B・・・ という規則のシート名で並んでいます。 "-A"から同じ数字の"-B"へそれぞれシートをコピーしたいのですが、どのようなマクロを組んだらよいのでしょうか。 もう少し具体的に申し上げますと、  ・1-Aのシートから1-Bのシートへコピー  ・2-Aのシートから2-Bのシートへコピー  ・3-Aのシートから3-Bのシートへコピー ・・・・ という事をやりたいです。 もしくは、最初は"-A"のシートだけあって、 それぞれ新たにコピーでシートを作り、その名前を"-B"に変えるという方法でも良いです。 最終的には”1-A、1-B、2-A、2-B、3-A、3-B・・・”というシートが並んでいて、 数字が同じシートは全く同じ内容、というブックを作りたいです。 皆様の知恵を拝借させてください。 よろしくお願い致します。

  • エクセル2007 マクロ シート 移動

    マクロ学習中のものです。 エクセル2007 マクロの複数のブックのシートをひとつのブックにまとめたいです。 ふつうにコピペすると、コピー先ではマクロが走りません、 どのようにすればよいか、アドバイスください!! よろしくおねがいします。

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

    いつもお世話になっております。 マクロ勉強中の者です。 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つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • シートコピーができない

    WINXPで エクセル2000を使用してます。 1ブックの中に4シートデータがあります。 1つのシートだけコピーができません。 (同じブック内に) 他のブックにはコピーする事ができます。 名前を変えたり、他PCで試しても同じです。 シートコピー制限するようなコマンドがあるのでしょうか。 それとも、ファイルが壊れてる? とりあえず、別の方法でコピーして作業してるのですが、 上記の現象が納得できないので、 回答お願いします。

専門家に質問してみよう