• 締切済み

VB.NET EXCEL操作でのマクロ存在判定方法

VB.NET(VS2005)でのEXCEL操作において、 そのEXCELファイルにマクロが含まれているかどうかを判断することは可能でしょうか? 何か方法があれば教えてください。 (指定したEXCELファイルを開いて印刷処理などをしたいのですが、  マクロがあるとエラーになったりと様々な問題が出てきます。  初めに、そのEXCELファイルにマクロがあるか判断し、  存在する場合は操作しないようにしたいと思っています。) どうぞよろしくおねがいします。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

Excel2007 以降では、マクロの有効無効で拡張子が変わりましたので、 それで判断して下さい。 Excel2003 以前では、通常の方法では無理だと思います。 マクロコードに関する直接的な操作は VBProject の下の命令を 使えば可能です。 ただし「Visual Basic プロジェクトへのアクセスを信頼する」 設定を手動で変更する必要があり、しかもこれをやってしまうと マクロウィルスに対するセキュリティが低下してしまいますので お勧めできません。 私は、上記以外でマクロコードの存在を調べる方法は知らないです。 なので無理だとしています。 目的は変わってしまいますが、 イベントを発生させない→Excel のマクロが走り出す切っ掛けを無くす という機能が、EnableEvents というプロパティで提供されているよう ですので、これを設定してマクロを走らせないようにする方法は あるようです。

Reman9
質問者

お礼

ご回答頂きまして大変ありがとうございます。 “セキュリティが低下”を前提として・・・ EnableEvents というプロパティ設定でマクロを走らせないようにして開き、 例えば、 VBProject の下の命令(ですかね?)のCodeModule.CountOfLinesが1以上だった場合、 「マクロコードが含まれる」という判断はできるということですね。 EnableEventsというプロパティがとてもありがたかったです。 どうやってもマクロが効いた動き方をして困っていましたので。 (プログラムレベルが低い者でして。) ありがとうございます。

Reman9
質問者

補足

すいません、補足 ではないのですが、 EXCELファイルをバイナリモードで開いて、特定文字列が存在すれば“マクロを含む”と判断できる ようなことはできないでしょうか。 マクロもそうですが、パスワード付ファイルかどうかもその方法で調べられないでしょうか。 もし可能なようでしたら、 プログラミングレベルが低いのでサンプルコードご教示頂ければ幸いです。 どうぞよろしくお願いいたします。 VB.NET(VisualStudio2005)、EXCEL2003

関連するQ&A