【VBA中級】*.xlsmブック内のVBAソースを削除して *.xlsx 形式で保存する方法

Excel開発のシーンでは、ベースとなるExcelマクロ形式のファイルの更新後、VBAソースの削除が必要となる場合があります。

Excel開発のシーンでは、ベースとなるExcelマクロ形式のファイルの更新後、VBAソースの削除が必要となる場合があります。

みなさん、こんにちは。セルネッツ竹本です。

今回は、「VBAプログラムソース削除の方法」をテーマに、解説をしたいと思います。

◆どんな場面で、ソース削除する必要性があるのか

例えば、部門スタッフが共有している「在庫一覧表.xlsm」の更新後、現在庫情報を出荷担当者へExcel(*.xlsx)でメール添付で送付したい。

要望としては、外部のお客様には、純粋なExcel形式で送付したいケースが多いと思うので、その方法をご紹介します。

【注意】VBAプロジェクトオブジェクトモデルへのアクセスを信頼する(V)
マクロ実行環境のPCでは、以下の設定が必要になります。
規定値はチェックがありませんが、オンにしないと実行時エラーが発生するので、留意してください。

◆VBAソース削除用のModule


以下のModuleをCallします。

Option Explicit

‘★★★ 不要オブジェクト削除用~外部保存における活用
Public P_BufBookModule削除用 As Workbook
Public P_VB_CompoModule削除用 As Object

‘※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Sub M_VBAソース削除()
‘※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
‘ツール>マクロ>セキュリティ>信頼できる発行元>Visual Basic プロジェクトへのアクセスを信頼するにチェック

   '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    '★ 自分自身のSheetモジュール(プロシージャ)を削除
    '★ VBA「プロジェクトへのアクセスをすべて信頼する」ONが前提
    '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

        Set P_BufBookModule削除用 = ActiveWorkbook  ' 対象シートをコピーした新規ブック

        '-----(↓VBProjectに対するアクセスが許可されていない場合はエラー
        '-----( VBProject内の各コンポーネントのコードを削除

        For Each P_VB_CompoModule削除用 In P_BufBookModule削除用.VBProject.VBComponents

            With P_VB_CompoModule削除用.CodeModule

                lngLines = .CountOfLines  ' コードを削除(全行)

                If lngLines <> 0 Then .DeleteLines 1, lngLines

            End With

        Next P_VB_CompoModule削除用

End Sub

これで、VBAソースが削除されるので、xlsx 形式の保存が可能になります。

今回のテーマは、「VBAプログラムソース削除の方法」について、解説を行いました。

本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。


全国対応!お気軽にお問い合わせください