Microsoft ExcelのVisual Basic Editorでは、VBAのソースをGrep検索などが出来ないので不便。
数個のプログラムならそれぞれを検索すればいいのだが、標準モジュール、クラスモジュール、ユーザーフォームなど大量のプログラムに分かれている場合は大変。
かといって、一つ一つのプログラムをエクスポートしてファイルに出力するのも大変。
なので、ソースコードをエクスポートするプログラムを作成してみた。
これを実行してやれば、Excelブックのディレクトリに「export_YYYYMMDDhhmm」を作成し、その中に各ソースをエクスポートしてくれる。
'列挙型変数定義 Public Enum ComponentType STANDARD_MODULE = 1 '標準モジュール CLASS_MODULE = 2 'クラスモジュール USER_FORM = 3 'ユーザーフォーム EXCEL_OBJECTS = 100 'Excelオブジェクト(ワークブック・シート) End Enum 'VBAソースコードエクスポート関数 Private Sub ExportVBAFiles() '変数定義 Dim TempComponent As Object Dim ExportPath As String 'エクスポート先ディレクトリの取得 ExportPath = ThisWorkbook.Path & "\export_" & Format(Now, "YYYYMMDDhhmm") 'エクスポート先ディレクトリがない場合、ディレクトリ作成 If Dir(ExportPath) = "" Then Call MkDir(ExportPath) End If 'エクスポート先ディレクトリに「BAS」ディレクトリがない場合、ディレクトリ作成 If Dir(ExportPath & "\BAS") = "" Then Call MkDir(ExportPath & "\BAS") End If 'エクスポート先ディレクトリに「CLS」ディレクトリがない場合、ディレクトリ作成 If Dir(ExportPath & "\CLS") = "" Then Call MkDir(ExportPath & "\CLS") End If 'エクスポート先ディレクトリに「FRM」ディレクトリがない場合、ディレクトリ作成 If Dir(ExportPath & "\FRM") = "" Then Call MkDir(ExportPath & "\FRM") End If 'プロジェクトのソースコードをループ For Each TempComponent In ThisWorkbook.VBProject.VBComponents 'タイプ別判定 Select Case TempComponent.Type '標準モジュールの場合、「BAS」ディレクトリへ出力 Case STANDARD_MODULE TempComponent.Export ExportPath & "\BAS\" & TempComponent.Name & ".bas" 'クラスモジュールの場合、「CLS」ディレクトリへ出力 Case CLASS_MODULE TempComponent.Export ExportPath & "\CLS\" & TempComponent.Name & ".cls" 'ユーザーフォームの場合、「FRM」ディレクトリへ出力 Case USER_FORM TempComponent.Export ExportPath & "\FRM\" & TempComponent.Name & ".frm" 'Excelオブジェクト(ワークブック・シート)の場合、「CLS」ディレクトリへ出力 Case EXCEL_OBJECTS TempComponent.Export ExportPath & "\CLS\" & TempComponent.Name & ".cls" End Select Next MsgBox "ソースエクスポート完了。" End Sub参考サイト
vba – Excel tab sheet names vs. Visual Basic sheet names – Stack Overflow
コメント