他の.xlsmブックを作成するために使用するブックを作成しようとしていますが、追加するために必要なモジュールを取得する方法がわかりません。VBA - ブック内のモジュールを取得する
私のコード、そのまま下にある(ここでは与えられた答えから変更:How to add excel 2010 macro programmatically)
私は助けを必要とする場所がImportModulesサブであり、コメントによって'LIST MODULES HERE
はどうすれば配列を取得することができます現在のブックに含まれるモジュールの数
Private Sub SVAmaker_Click()
Dim file As String
file = InputBox("SVA Planner file name", "Name", "Name")
Application.DefaultSaveFormat = xlOpenXMLWorkbookMacroEnabled
Workbooks.Add
ActiveWorkbook.SaveAs filename:=file
Dim WB As Workbook
WB = ActiveWorkbook
Call ImportModules(VBA.CStr(WB))
End Sub
Sub ImportModules(sWorkbookname As String)
Dim cmpComponents As VBIDE.VBComponents
Dim wbkTarget As Excel.Workbook
Set wbkTarget = Workbooks.Open(sWorkbookname)
If wbkTarget.VBProject.Protection = 1 Then
Debug.Print wbkTarget.Name & " has a protected project, cannot import module"
GoTo Cancelline
End If
Set cmpComponents = wbkTarget.VBProject.VBComponents
Dim vModules As Variant
'LIST MODULES HERE
Dim i As Integer
For i = LBound(vModules) To UBound(vModules)
cmpComponents.Import vModules(i)
Next i
Cancelline:
If wbkTarget.FileFormat = xlOpenXMLWorkbook Then
wbkTarget.SaveAs wbkTarget.Name, xlOpenXMLWorkbookMacroEnabled
wbkTarget.Close SaveChanges:=False
Else
wbkTarget.Close SaveChanges:=True
End If
Set wbkTarget = Nothing
End Sub
を助け、実際には、あなたのコードを見て、あなただけのcmpComponentsを反復してのコンポーネント・タイプを確認し、任意のコレクションを必要としないことを望みますそれは1に等しいなら、それはモジュールであり、あなたはそれをインポートすることができます。 – holmicz