プロが教えるわが家の防犯対策術!

マクロを作成したエクセルファイルがあるのですが、配布した数が1万ほどありまして、
今回、vbaプログラム自体を変更しなければいけなくなりました。

そこで、調べた結果vbaをvbaで編集することまではわかりました。
http://officetanaka.net/excel/vba/vbe/index.htm

しかし、配布したエクセルファイルのvbaProjectにパスワード保護をかけていまして、上手く動作しません。

なので、vbaでvbaProjectの保護を解除したいのですが、何かいい方法がありましたら、
ご指導の程よろしくお願いします。


※vbaProjectのパスワードはわかっています。

A 回答 (3件)

最初に、リンク先のOfficeTanakaのサイトに書かれてあるものは、アマチュア用でもなければ、プロ用でもないもので、そのような手法が受け入れられるはずがありません。



>vbaでvbaProjectの保護を解除したいのです
Sendkeyでバスワードを送ることは可能ですが、それをしても、次の段階が出てきます。コード編集ではセキュリティ解除をしなければなりませんから、Resistry操作が出てきます。そうすると、アンチウィルスに引っかかってくる可能性も出てきます。だから、OfficeTanakaの話は現実的ではないことが、お分かりになるかと思います。そんなに簡単なことではないはずです。

1万コピー配布で、なぜ、その後の方策を立てなかったのか、と思います。
基本的には、アドインスタイルを取ります。アドインにするためには、特別に配布用のインストーラーが必要になってきますが、フリーで手に入ります。

また、アップデート用のブックを配布とはいっても、ワークシート上はすでにユーザーが手を付けているので、そのまま、ブック自体を配布することは出来ないはずです。新しいブックに、シートコピーをして新しいブックに移し替え、新しいブックにして使ってもらう方法を考えます。しかし、コントロールツールなどがあれば、それはすげ替えることが利きませんから、予め置いておくか、マクロで設けるしかありません。こちらとしては、この程度しかアイデアがありません。
    • good
    • 0

私だったらこうすると思う方法を書きます。



まず、修正されるブックをA、アップデートとのブックをUPと言う名前だったとします。

1 まず、UPを開いて、自分の名前が、UPかどうかを確認し、そうでなかったら実行をやめます。

2 アップデート済みの印が有ったら、実行をやめます。

3 次に、Aを開きます。

4 Aの内容(シート)をUPにコピー貼り付けします。

5 Aを閉じます。

6 Aの名前をA.xls.copyに変えます。

7 UPのシートのどこかに、アップデート済みの印をつけてセーブします。

8 アップデート済みの印を消します。

9 UPをAという名でセーブします。

10 UPを消すようメッセージを出して、終わります。


この一連の動作をマクロにして配布します。

Aのブックには、このマクロが残りますがそれは我慢してもらうしかないです。
    • good
    • 0

質問の意味がよくわかりません



プログラムでプログラムを制御する という考えは賛同できません
それってつまりマクロウィルスを肯定するようなものです

そもそも 元の作成時 1万ものブックを作成したとは思いません
1つ作ってそれをコピーして1万にしたのではないのですか?

今回も1つ修正してそれを再配布すればいいのではないでしょうか?

それとも違う意味なのですか?

この回答への補足

わかりにくくてすいません。

1万はおっしゃる通り、コピーされ使用されてる数です。
そもそも質問文には余計でした。

もちろん再配布は考えているのですが、既存で使用している分に関しても継続的に使用できるようにした方が、ユーザ側への負担が減るのでどうにかできないかと思い、今回質問させていただきました。

補足日時:2011/01/31 00:38
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A