5
マクロをプログラムでExcelファイルに追加する方法はありますか?
Excelファイルが多すぎて、マクロを追加したいです。 手作業で(手動で)追加することは不可能と思われます。 これを行うためのツールを作成する必要があります。excel 2010マクロをプログラムで追加する方法
マクロをプログラムでExcelファイルに追加する方法はありますか?
Excelファイルが多すぎて、マクロを追加したいです。 手作業で(手動で)追加することは不可能と思われます。 これを行うためのツールを作成する必要があります。excel 2010マクロをプログラムで追加する方法
はい、これをプログラマチックに行うことができます。コードを使用してVB統合開発環境にアクセスできます。次のWebサイトは、VBIDEについて学ぶのに優れています。私はそれらを使ってこのコードをまとめました。 WorkbookModuleImport
を実行すると、モジュールをインポートするワークブックとインポートするモジュールを選択する2番目のダイアログボックスが表示されます。 http://www.cpearson.com/excel/vbe.aspxと http://www.rondebruin.nl/vbaimportexport.htm:
Sub WorkbookModuleImport()
Dim ii As Integer, vFileNames As Variant, vModules As Variant
'We'll use the Application.GetOpenFilename to get a list of all the excel workbooks we want to import into
vFileNames = Application.GetOpenFilename(",*.xls;*.xlsx;*.xlsm", , "Select Workbooks to Import Modules To", , True)
'If the result is not an array it means the cancel button has been pressed
If Not IsArray(vFileNames) Then Exit Sub
'Use the same method to get all the modules/classes/forms to input
vModules = Application.GetOpenFilename(",*.cls, *.bas, *.frm", , "Select Modules/Forms/Class Modules to Import", , True)
If Not IsArray(vModules) Then Exit Sub
'Now loop through all the workbooks to import the modules
For ii = LBound(vFileNames) To UBound(vFileNames)
Call ImportModules(VBA.CStr(vFileNames(ii)), vModules)
Next ii
End Sub
Public Sub ImportModules(sWorkbookName As String, vModules As Variant)
Dim cmpComponents As VBIDE.VBComponents, ii As Integer
Dim wkbTarget As Excel.Workbook
'We need to open the workbook in order to be able to import the code module
Set wkbTarget = Workbooks.Open(sWorkbookName)
'If the project is protected with a password we can't import so just set tell us in the immediate window
If wkbTarget.VBProject.Protection = 1 Then
'Give a message
Debug.Print wkbTarget.Name & " has a protected project, cannot import module"
GoTo Cancelline
End If
'This is where we set the reference to the components of the Visual Basic project
Set cmpComponents = wkbTarget.VBProject.VBComponents
'Loop through all the modules to import
For ii = LBound(vModules) To UBound(vModules)
cmpComponents.Import vModules(ii)
Next ii
Cancelline:
'If it's in Excel 2007+ format but doesn't already have macros, we'll have to save it as a macro workbook
If wkbTarget.FileFormat = xlOpenXMLWorkbook Then
wkbTarget.SaveAs wkbTarget.Name, xlOpenXMLWorkbookMacroEnabled
wkbTarget.Close SaveChanges:=False
Else
'Otherwise, just save the workbook and close it
wkbTarget.Close SaveChanges:=True
End If
'I don't trust excel, so set the workbook object to nothing
Set wkbTarget = Nothing
End Sub
これらのウェブページは、偉大なリファレンスです。私はロンを出発点として使用しました。
この質問の回答に従うこともできます[異なるExcelファイルで1つのマクロを使用する](http://stackoverflow.com/q/9480936/4519059)。 –