VBAでマクロのソース削除と標準モジュール削除

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ VBAでマクロのソース削除と標準モジュール削除

EXCELブックファイルをリリースする時に、VBAマクロで処理した後、セキュリティの関係でマクロ削除をする場合がよくあります。

これを手動で削除するのでなくて、マクロをマクロで削除する方法を以下に示します。

ただし、前条件が2つ。

  1. Microsoft Visual Basic Application Extensibility の参照設定が必要(Alt+F11でVBEになり、そのウィンドウメニューのツール(T)の参照設定(R)から)。
  2. EXCEL2003のマクロセキュリティの設定で『Visual Basic プロジェクトへのアクセスの信頼する』をチェックする(ブックxlsウィンドウのツール(T)->マクロ->セキュリティ(S)->信頼できる発行元タグの一番下)。
    Dim objVBCOMPO     As Object
        For Each objVBCOMPO In ActiveWorkbook.VBProject.VBComponents
            With objVBCOMPO.CodeModule
                If .CountOfLines <> 0 Then .DeleteLines 1, .CountOfLines
            End With
            If (objVBCOMPO.Type = vbext_ct_StdModule Or objVBCOMPO.Type = vbext_ct_MSForm) Then
                ActiveWorkbook.VBProject.VBComponents.Remove objVBCOMPO
            End If
        Next objVBCOMPO
        Set objVBCOMPO = Nothing

ソースは削除されますが、なぜか、空の標準モジュールが削除されない場合があります。ご留意ください。

また、VBProjectオブジェクトをいろいろいじくりまわすと、アンチウイルスソフトで自分がウイルス扱いされたり、 VB自体も怪しい動きをする場合があります。ご注意ください。

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。