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実務の効率化において、ご参考お役立てになれば幸いです。