■ 最新の投稿

VBAProject技:もう手作業はいらない!VBAでExcel内の全モジュールを一気にエクスポートする

VBAProjectにたくさんのモジュールがあるExcelブックって、それだけで大変ですが、これを全部エクスポートしようとすると、1つずつ手作業で書き出すしかなくて、とても面倒です。

一括でエクスポートするVBA技を紹介します。

【例】VBAProjectにモジュールを含むExcelブックを想定します。

① Visual Baisc プロジェクトへのアクセスを許可します。

Visual Baisc プロジェクトへのアクセスを許可する方法

② 「Microsoft Visual Basic for Application Extensibility」を参照設定します。

③ 次のプログラムコードを記載します。

Public Sub Sample_ExportAllModule_01()

' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
' 参照設定:
' 「Microsoft Visual Basic for Application Extensibility」
' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

' このブックのVBProjectをオブジェクト変数に格納する。
Dim Obj As VBIDE.VBProject
Set Obj = ThisWorkbook.VBProject

' VBProjectに存在するコンポーネント数を変数に格納する。
Dim CompCnt As Long
CompCnt = Obj.VBComponents.Count

' エクスポート先のフォルダを決める。
Dim ExpDir As String
ExpDir = "C:\VBAModuleFile"

' VBProjectに存在するコンポーネントを一つずつ参照する。
Dim lp As Long
For lp = 1 To CompCnt
' エクスポートするファイルの拡張子を決定する。
Dim str As String
Select Case Obj.VBComponents(lp).Type
Case 1
str = ".bas"
Case 2
str = ".frm"
Case Else
str = ".cls"
End Select

' エクスポートを実行する。
With Obj.VBComponents(lp)
.Export (ExpDir & "\" & .Name & str)
End With
Next

' オブジェクトを破棄する。
Set Obj = Nothing

End Sub

このVBAを実行すると、以下の結果が得られます。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です