Esportare i componenti di un progetto VBA

(Exporting VBA components to files)

Torno alla ribalta con un articolo prettamente tecnico, ma ne farò seguire altri maggiormente di attualità.

Negli ultimi tempi mi sta capitando di maneggiare progetti Visual Basic for Applications ed una delle difficoltà maggiori che ho incontrato è stata quella di “versionare” il codice in modo di avere lo storico delle modifiche effettuate. Il codice infatti è compilato all’interno dei file *.xla o *.xls (se si tratta di un addin per Excel) e, non essendo confrontabile come file di testo (il codice è compilato in binario e visibile solo all’interno dell’editor VBA), l’unico modo per evidenziare le differenze è quello di esportare ogni singolo modulo come file indipendente.

Non sarebbe un grosso problema se l’operazione va fatta modulo per modulo e con progetti di grosse dimensioni può diventare una notevole perdita di tempo. Ho trovato qui un codice che consente di automatizzare l’operazione ed io l’ho personalizzato come segue:

Dim VBProj As VBIDE.VBProject
Dim vbComp As VBComponent
Dim numComp As Integer
Dim i As Integer
Dim strSavePath As String

strSavePath = txtSavePath.Text

numComp = Application.VBE.VBProjects.Item(1).VBComponents.Count

For Each vbComp In Application.VBE.VBProjects.Item(1).VBComponents
Select Case vbComp.Type
Case vbext_ct_StdModule
vbComp.Export strSavePath & “\” & vbComp.Name & “.bas”
Case vbext_ct_Document, vbext_ct_ClassModule
‘ ThisDocument and class modules
vbComp.Export strSavePath & “\” & vbComp.Name & “.cls”
Case vbext_ct_MSForm
vbComp.Export strSavePath & “\” & vbComp.Name & “.frm”
Case Else
vbComp.Export strSavePath & “\” & vbComp.Name
End Select
Next
MsgBox “VBA files have been exported to: ” & strSavePath
End Sub

In pratica ne ho fatto un modulo che,  associato ad un documento Office e richiamato da una macro, può esportare per intero un progetto caricato a livello di applicazione (in questo caso si assume che esista un addin caricato come primo progetto in VBA, ma Item(1) può essere sostituito con un altro progetto ricercato per esempio tramite il nome).

Annunci

~ di karminio su 30 gennaio 2009.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger hanno fatto clic su Mi Piace per questo: