VBAマクロ保護についての質問

このQ&Aのポイント
  • VBAコードのパスワード設定方法を教えてください
  • VBAマクロ保護を強化してコードの表示を制限する方法を知りたい
  • VBAプロジェクトのパスワード設定とコードの表示制限について教えてください
回答を見る
  • ベストアンサー

VBA マクロ保護

VBA マクロ保護 VBAProject 保護はツールにて保護パスワード設定しています! 私が作ったもので、コマンドボタンをクリックしたら指定された フォルダにコピー(例;Sheet1のみコピー)できるようにしています! そこのコピーのフォルダを開き、ブックを開いてみると シート保護はされていますが コードの表示にパスワード設定がなく、そのまま見えてしまいます。 そこで質問なのですが コードの表示を見れなくさせるために VBA記述でコピーするときにVBAProjectにパスワード設定させたいです。 ちなみにVBAProject本体には、パスワード設定しています。 どのようにすれば良いか?記述を教えてください!

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

No.2です。 なんとなく理解しました。 こんな風に逃げては? マクロは標準モジュールに書きます(例:Sub MainMacro)。 次に、Sheet1でボタンを押したときに実行されるPrivate Sub CommandButton1_Click() (ボタンが多い場合はButton1の部分が変わりますが……)のマクロ本文には call MainMacro と、だけ入れておきます。 つまり、Sheet1のボタンが押されたら、標準モジュール内のMainMacroが実行される状態です。 これなら、Sheet1をコピーしても見られてしまうコードは「 call MainMacro」だけです。

pop2003
質問者

お礼

何度も回答いただき ありがとうございました!! 今後も宜しくお願いします!

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

補足願います。 Sheet1のみコピーするマクロを、コピーした(Sheet1しか無いブック)にも入れたいのですか? 入れる必要が無い様に思えますし、必要が無いなら、元々のマクロを標準モジュールに入れておけば良いように思えるのですが……。

pop2003
質問者

補足

すいません!遅くなりました。 それに質問内容も分かりずらいですよね!! すいません。 Sheet1~10まであり Sheet1のみボタンがあり、そこをクリックしたら Sheet1のみフォルダに飛びます! フォルダを開いて、Sheet1を開くと Sheetの保護をVBAでかけていますが VBAコードの表示がパスワードがかかっていないので 記述が見えてしまいます。 VBAコードの表示を見えなくさせたいのですが それは出来ますか?教えてください!

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

こんにちは。 >VBA記述でコピーするときにVBAProjectにパスワード設定させたいです。 基本的にはできません。マクロを搭載したシートのコピーでは、そういうようにはできていないのです。予めシートひとつのコピー用のマクロブックを作っておいて、データだけをコピーして、ブックの複製を作ります。 分かりにくい内容ですが、このようにします。 ------------------------------------------- TestBook.xls データ用のブック(今までの使っていたブック) 複製を作るマクロ・ブック(以下では、ThisWorkbook)。 データが空にして、ここに、以下のマクロをシートに入れ、該当するコマンドボタンを置きプロテクトをします。 TestBookの該当するシートを開く。そして、ThisWorkbook のシート上のCommandButton をクリックすると、データブックのアクティブシートのデータが、ThisWorkbook のアクティブ・シートにコピーされます。 新しいブックが出来上がります。そのブックのVBAは、プロテクトされています。 ただし、以下のマクロでは、複製ブックから、再び複製のブックを作ることはできないような設定になっています。しかし、「複製禁止」は、あまり意味がありません。ボタンを削除するか、ショートカットを設けて、コマンドボタンを残さないほうがベターです。複製から複製を作るなら、該当部分を削除してください。 ユーザー設定部分 は、ご自分で書き入れてください。 '------------------------------------------- Private Sub CommandButton1_Click() '←-ボタン名は適当に変えてください。   Dim CopyBook As Workbook   Dim BaseName As String   Dim fName As String   Dim i As Variant      On Error GoTo ErrHandler   '-------------------------------------------   ''ユーザー設定部分   '拡張子   Const sEXT As String = ".xls" '.xlsm (Excel2007)   '設定   'ベースになる名前   BaseName = "TestBook"   'ブックの登録   Set CopyBook = Workbooks("MyDataBook.xls")   '-------------------------------------------   '複製から複製を作ることを禁止させる    If StrComp(ThisWorkbook.Name, BaseName & sEXT, vbTextCompare) <> 0 Then     MsgBox "複製ブックから、複製を作る事は出来ません。", vbCritical, "コピー禁止"     Exit Sub   End If   'ここまで   CopyBook.ActiveSheet.UsedRange.Copy   ThisWorkbook.ActiveSheet.Range("A1").PasteSpecial (xlPasteValues)   ThisWorkbook.ActiveSheet.Range("A1").Select   Application.CutCopyMode = False   If MsgBox("データはこれでよろしいですか?" & vbCrLf & _     "複製を作ります。", vbInformation + vbOKCancel, "データ作成") = vbCancel Then     Set CopyBook = Nothing     Exit Sub   End If   '-------------------------------------------   i = 1 '文字でも可能 Chr(64+i)   Do     fName = BaseName & CStr(i) & ".xls"     i = i + 1   Loop Until Dir(fName) = ""   ThisWorkbook.SaveAs fName   MsgBox "ブック名 :" & fName & vbCrLf & "新しいブックの複製ができました。", vbInformation, "完了"   Exit Sub ErrHandler:   If Err.Number = 9 Then     MsgBox "該当ブックが見つかりません。", vbExclamation   ElseIf Err.Number > 0 Then     MsgBox Err.Number & " : " & Err.Description, vbExclamation   End If End Sub

pop2003
質問者

補足

返事遅れてすいません。それに質問内容も具体的でなく ここまで親切に教えていただき 感謝しています! コマンドボタンを残さず削除して Sheet1をコピーしてフォルダの中に入れるように VBAでおこなっています。 ただコード表示が見えてしまい 色々弄られてしまいます! 見えないようにするのは やはり不可能なのでしょうか?

関連するQ&A

  • マクロが実行できません

    Excel97を使っています。 あるワークブックに4枚のシートがあります。 全てのシートはパスワード付きで保護しています。 VBAProjectのプロパティもパスワード付きで保護しています。 4枚の内の1枚のシートにコマンドボタンを配置して、そのコマンドボタン押下時に、次の動作をするコードを記述しています。 (1)YesNoの確認ダイアログを出す (2)Yesであれば現在のシートをテキスト区切りファイルとして保存する (3)Noであれば何も動作しない ところが、コマンドボタンを押して、確認ダイアログの“はい”ボタンを押すと、「実行時エラー'1004': 'SaveAs'メソッドは失敗しました:'_workbook'オブジェクト」というエラーが出てマクロがストップしてしまいます。 一旦VBAを開いて、VBAProjectのプロパティのパスワード付き保護を解除すれば、正常に動作します。 宜しくお願いします。

  • エクセルVBA-いじっていたら書いた記述がみられなくなりました。

    いつもお世話になります。 エクセルVBAで記述後、コードを見られないようにできるって聞いてたので、思い出していじっていました。 ツール→VBAProjectのプロパティの保護タブで、プロジェクトを表示用にロックするにチェックをし、パスワードを入力した(確かそうでした)と思います。 改めて記述を見てみようとしたところ、どこをどうしたら記述したのを見られるのか、さっぱりわからなくなり困っています。 どうぞ、よろしくお願いします。

  • ExcelVBAでコード表示をさせない方法

    Excel2013でVBAコードを表示させたくありません。 ツールー>VBAProjectのプロパティ->保護ー>プロジェクトを表示用にロックする ->パスワード入力 をすると確かにパスワードがかかるようになります。 しかしそのファイルを開いて シートの移動またはコピー>移動先ブック名<新しいブック>->コピーを作成にチェック ー>OK とするとコピー先の新しいブックでパスワードでロックしていたはずの VBAコードが見れるようになります。 シートのコピーをしても見えなくする方法はありませんか? 宜しくお願いします

  • VBEコードを保護する方法について

    エクセル2003、VBEの標準モジュールコードウィンドウにマクロを作りました。これを他人に見られないように保護したいと思い、メニュー>ツール>VBAProjectのプロパティ>保護>プロジェクトのロックにチェック>パスワード2回入力>OK>保存と処理した後、そのファイルを開いてモジュールシートを見てみたら見ることはできませんでした。 しかしObjectsフォルダー内のシートに書いたマクロはそのシートを他のブックに移動してみたら見えてしまいました。標準モジュールに書いたものは安心できますか。もしもっといい保護方法が他にあるならば教えていただきたいのですが。

  • VBAProjectへの保護の設定

    Excel2000 Win2000 Excelマクロから他のExcelブックの VBAProjectへ保護とパスワードを設定したいのですが、 方法はありますか? また、保護を外すのもしたいです。 マクロの保存ではコードが保存されませんでした。

  • VBAパスワードを解除するマクロ

    そういうマクロがあるのか無いのかも分からないので、教えてください。 VBAProjectにパスワードを設定しています。これはマクロを無効にしてエクセルを開いたときにコードが管理者以外に見えないようにしたいためです。マクロを有効にして開いたときに、ある処理を走らせたあと、マクロごと消去したいのですが、コンパイル時にVBAにパスワードがっかっているために、うまくいかないようなのです。 どなたかご存知あれば、教えてください。 よろしくお願いいたします。

  • EXCEL vba でマクロにパスワードを設定できますか

    メニューバー「ツール」→VBAProjectのプロパティを選択して パスワードの設定、解除をするのではなく、 この処理を割り当てたコマンドボタンなどで設定、 解除をさせたいのですが、可能でしょうか ネットで調べてみましたが、 メニューバー「ツール」→VBAProjectのプロパティで 設定する方法しかみつけられませんでしたので もし可能でしたら、どのように記述すればいいのか お教えいただけないでしょうか よろしくお願いします

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

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

  • VBAでのブック・シートの保護・解除について

    エクセル2010のVBAでのブック、シートの保護&解除の方法について教えて頂きたく、 質問させて頂きます。 消されては困るシートや数式がある関係で、ブックオープン時にVBAでブックとシートにそれぞれパスワードをかけて保護しています。 VBAではシートの削除、作成、コピーなどを行っているため、VBA実行時のみ、保護を解除させるようにしたいと思います。 ただ、対象のシート自体にも入力したい項目があるため、その箇所については保護を解除しておく必要があります。 そして、VBA実行後、再度、その箇所以外にパスワードで保護をかけ直します。 イメージとしては下記のような流れになります。 対象ブック:ブックA 対象シート:シート1 パスワード:1234(それぞれ) 常時保護を解除しておきたいセル:range("A6:H106") 1.(オープン時には、)ブック保護&特定のセル以外のシート保護 2.VBA実行時には全ての保護解除 3.VBA終了時に、1の状態に戻る どうぞよろしくお願い致します。

  • エクセルに不要なスタイルが入ってしまいました

    Excel 2003 ブックが多くなってきたので、整理することにしました。 複数のブックをまとめ、メニュー用シートを作り、ハイパーリンクを設定しました。 この時、ネットで調べた、VBAのコードを貼り付け、自動でワークシート名を取得するマクロを作成したりもしました。 このマクロは作業終了後に削除しました。 追加で新しく、ワークシートを入れたのですが、その際、1シートだけなので、 Ctrl + Kでハイパーリンクの挿入を行ったのですが、 フォントサイズが小さくなり、ネットで調べると、書式→スタイル→ハイパーリンクで フォントサイズを変更すると解説があり、その通りしてみると、 "護されたシートに対して、このコマンドは使用できません。保護を解除するには、[ツール]メニューの[保護]をポイントし、[シート保護の解除]をクリックします。パスワードの入力を要求されることもあります。" と表示され、書いている通り、「ツール」メニューの「保護」をポイントしたが、シート保護の解除はありません。 また、スタイルには、他のブックと比べるとものすごい多いスタイルが設定されています。 他のブックと見比べながら、スタイルを消そうとしても、消せれません。 新しいブックに、ワークシートをコピーして作り直そうとしても、どのシートをコピーしても、不要なスタイルが入ってしまいます。

専門家に質問してみよう