さまざまなドキュメントを処理して一貫した外観にする Word VBA アプリケーションがあります (ドキュメントは別の SW ツールからエクスポートされます)。各ドキュメント タイプには、変換方法を「認識」しているクラス ファイルがあります。新しいドキュメント タイプが追加された場合は、新しいクラス ファイルを作成し、いくつかの手順を更新して新しいクラスへの参照を追加する必要があります。クラス ファイルを検出して使用するプロセスを自動化したいと考えています (それらはすべて命名規則に従います)。ファイルへの参照を収集する必要があるのは次のとおりです。
Dim olVBCodeMod As VBComponents
Dim olaClasses() As VBComponent
Dim olVBCodeCmpt As VBComponent
Const slCLASS_NAME_PREFIX = "clsXXXX"
Set olVBCodeMod = Application.VBE.ActiveVBProject.Collection.Item("Normal").VBComponents
ReDim olaClasses(0)
For Each olVBCodeCmpt In olVBCodeMod
If olVBCodeCmpt.Type = vbext_ct_ClassModule Then
If InStr(olVBCodeCmpt.Name, slCLASS_NAME_PREFIX) = 1l Then
Set olaClasses(UBound(olaClasses)) = olVBCodeCmpt
ReDim Preserve olaClasses(UBound(otaClasses) + 1)
End If
End If
Next
ReDim Preserve olaClasses(UBound(otaClasses) - 1)
残念ながら、クラス ファイルへの参照から、クラス ファイル内でプロシージャを実行できるようにする方法がわかりません。つまり、olaClasses(0).function1?
私のフォールバック アプローチは、各クラスへの参照を含むオブジェクト配列 (パラメーターとして渡される) を返すサブを作成することです。
Set olaClasses(0) = New clsXXXX
これは機能します。たとえば、 olaClasses(0).function1 は正しい応答を返しますが、クラスファイルを自動検出できると便利です...