- 締切済み
VBAパスワードを解除するマクロ
そういうマクロがあるのか無いのかも分からないので、教えてください。 VBAProjectにパスワードを設定しています。これはマクロを無効にしてエクセルを開いたときにコードが管理者以外に見えないようにしたいためです。マクロを有効にして開いたときに、ある処理を走らせたあと、マクロごと消去したいのですが、コンパイル時にVBAにパスワードがっかっているために、うまくいかないようなのです。 どなたかご存知あれば、教えてください。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ご質問の最終的な意図が明らかではありませんので、本来は、回答は控えるべきかもしれませんが、少し、書いておきます。 >実はダウンロードファイルにマクロを実装したいのです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2259005 (http://okwave.jp/kotaeru.php3?q=2259005) でも書きましたが、それは、VBやDeveloper のディストリビューション・ウィザードやEXEPress を使ってインストールさせればよいと思います。つまり、それらの知識が必要だということです。 >マクロを無効にしてエクセルを開いたときにコードが管理者以外に見えないようにしたいためです。 マクロを無効にしても、パスワードを教えなければ、コードは見られません。 ただ、気にする人は、プライベート・デジタル署名を入れますね。入れても、気休め程度ですが。 ただ、もし著作権保護の立場からすれば、しょせん、一般のプロテクトは、パスワード・クラックされた終わりだし、また、クラックされても、クラックするような輩には分からないレベルのコーディング書くっていうのが、筋なんですね。 それと、単に、On Error Goto のエラートラップではなく、完全に、そのマクロの可能性のあるエラーがすべて見切っている時だけ、プロテクトをすべきだと私は思います。それ以下の状態では、プロテクトはしない、というのが、「VBAの暗黙のルール」だと思います。そうしないと、VB Editor が開かないので、何が原因なのか、ユーザーには解決できません。こういうのは、VBプログラマの人に多いような気がします。 どこかの人は、本家だとかなんとか、古いテクニックを使って、特殊なプロテクトをしているようですが、MSの考え方は、著作権を気にするなら「DLLか、COMにしなさい。出来ないなら、諦めなさい。」という論調です。だから、VBAのプロテクトを強化しなかったようですね。 近い将来、マクロはワークブック(データ)とは切り離しにはなるものの、そういう自爆型マクロというのは、今は、MS側では許さないように出来ています。やれば、できるような気がしますが、たぶん、アンチウィルスに確実に引っかかると思います。それは、古いバージョンのテクニックを使う、かつてマクロ・ウィルスとして存在していたものであり、ご質問の内容も、それに準ずるものですから、一般の掲示板では語られることのないものです。 その設計の方向性を変えるしかないと思います。
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 VBA Project の保護は、プログラムから一般の人には解除できません。 いくら調べても解決の方法は探せないでしょう。 SendKeys による方法がネットで紹介されているようですが、Excel の環境 はユーザー毎に違いますので、成功確率が低すぎて使いものにならないで しょう。 結論は、設計から再検討することをオススメします。 また、余計なお世話かもしれませんが、老婆心ながら。 何のためにパスワードで保護するのか? この意義を考えれば、簡単に解除できては困るのです。例え、ご自分の VBA Project であり、パスワードも知っている、悪意もない、一時的に保護解除 したいだけだ...としても、プログラムから VBA Project の保護を解除する 方法が公開されてしまえば、誰でも簡単に「保護解除ツール」が作れてしま うからです。 これが「いくら探しても情報が無い」理由です。 > マクロを有効にして開いたときに、ある処理を走らせたあと、マクロごと > 消去したいのですが... このマクロが Auto_Open や Workbook_Open にあるなら、ウイルスと誤解 されそうな動作ですよね... あなたに悪意は無いでしょうが、誤解する人は必ずでてきます。
- hana-hana3
- ベストアンサー率31% (4940/15541)
ネットを探すと、VBAを使ってVBE画面を開いてSendkeyで制御するサンプルがあります。 VBAのパスワード制御はこのレベルでしか出来ないので、いつでも都合良く制御するのはかなり難しいかも知れません。 >マクロを有効にして開いたときに、ある処理を走らせたあと、マクロごと消去したいのですが コードをアドインで保持するのは駄目なのですか?
補足
アドインのことですが、実はダウンロードファイルにマクロを実装したいのです。ユーザーがダウンロードで必要なファイルを取り出して、開いたときに必要な処理をする必要があり。。。