Ho scritto una sorta di sistema di compilazione per Excel che importa il codice VBA dai file di origine (che può essere quindi importato nel controllo del codice sorgente, diffed, ecc.). Funziona creando un nuovo file Excel che contiene il codice importato, quindi potrebbe non funzionare nel tuo caso.
La macro costruzione assomiglia a questo, ho salvarlo in un file chiamato Build.xls:
Sub Build()
Dim path As String
path = "excelfiles"
Dim vbaProject As VBIDE.VBProject
Set vbaProject = ThisWorkbook.VBProject
ChDir "C:\Excel"
' Below are the files that are imported
vbaProject.VBComponents.Import (path & "\something.frm")
vbaProject.VBComponents.Import (path & "\somethingelse.frm")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "Output.xls"
Application.DisplayAlerts = True
Application.Quit
End Sub
Ora, significa che la roba VBIDE è necessario importare un riferimento denominato “Microsoft Visual Basic per Applications Extensibility 5.3 " penso che
Naturalmente avete ancora il problema di avere per avviare Excel per costruire questo può essere risolto con un piccolo script VB:..
currentPath = CreateObject("Scripting.FileSystemObject") _
.GetAbsolutePathName(".")
filePath = currentPath & "\" & "Build.xls"
Dim objXL
Set objXL = CreateObject("Excel.Application")
With objXL
.Workbooks.Open(filePath)
.Application.Run "Build.Build"
End With
Set objXL = Nothing
Ru lo script precedente dovrebbe avviare il file Excel di compilazione che restituisce il foglio risultante. Probabilmente dovrai modificare alcune cose per renderlo mobile nel file system. Spero che questo ti aiuti!
Solo una nota - cartelle di lavoro che programmaticamente alterare il loro codice VBA sono spesso contrassegnato come i virus ... –