■ 最新の投稿

Excelブックにモジュールをインポートする

VBAにてVBAにモジュールをインポートする方法を紹介します。インポート作業のツール化が可能になるでしょう。

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

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

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

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

Public Sub Sample_ImportModule_01()

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

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

' インポートしたいファイル名を決める。
Dim ImpFile As String
ImpFile = "C:\汎用モジュール\FileIOModule.bas"

' ブック内にモジュールがあるか判別する。
If exists_ImpFile(ImpFile) Then
MsgBox "既に同一モジュールが存在します。", vbExclamation
Else
' このブックにVBAモジュールをインポートします。
Obj.VBComponents.Import ImpFile
End If

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

End Sub

' *
' * ブック内にモジュールがあるか判別する関数
' *
Public Function exists_ImpFile( _
pImpFile As String _
) As Boolean

' 戻り値をFalseで初期化する。
exists_ImpFile = False

' FileSystemObjectを生成する。
Dim F As Object
Set F = CreateObject("Scripting.FileSystemObject")

' ファイルのベース名を切り出す。
Dim fileName As String
fileName = F.GetBaseName(pImpFile)

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

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

' VBProjectに存在するコンポーネントを一つずつ参照する。
Dim lp As Long
For lp = 1 To CompCnt
' モジュールが既に存在していないか判別する。
If Obj.VBComponents(lp).Name = fileName Then
' 戻り値をTrueにする。
exists_ImpFile = True
GoTo END_JUDGE
End If
Next

END_JUDGE:

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

End Function

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


Comments

コメントを残す

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