Esportazione del codice VBA da più documenti Excel da mettere in controllo versione [chiuso]
-
03-07-2019 - |
Domanda
Qualcuno conosce un modo per esportare il codice VBA da un numero di documenti Excel, in modo che il codice possa essere aggiunto in un repository sovversivo? Senza dover aprire manualmente ogni documento ed esportare il codice.
Soluzione
Troverai uno strumento per questo qui:
http://www.pretentiousname.com/excel_extractvba/index.html
È uno script VBS che automatizza Excel. Puoi modificarlo in base alle tue esigenze - nota che non è perfetto (leggi la pagina web per le avvertenze).
option explicit
Const vbext_ct_ClassModule = 2
Const vbext_ct_Document = 100
Const vbext_ct_MSForm = 3
Const vbext_ct_StdModule = 1
Main
Sub Main
Dim xl
Dim fs
Dim WBook
Dim VBComp
Dim Sfx
Dim ExportFolder
If Wscript.Arguments.Count <> 1 Then
MsgBox "As the only argument, give the FULL path to an XLS file to extract all the VBA from it."
Else
Set xl = CreateObject("Excel.Application")
Set fs = CreateObject("Scripting.FileSystemObject")
xl.Visible = true
Set WBook = xl.Workbooks.Open(Trim(wScript.Arguments(0)))
ExportFolder = WBook.Path & "\" & fs.GetBaseName(WBook.Name)
fs.CreateFolder(ExportFolder)
For Each VBComp In WBook.VBProject.VBComponents
Select Case VBComp.Type
Case vbext_ct_ClassModule, vbext_ct_Document
Sfx = ".cls"
Case vbext_ct_MSForm
Sfx = ".frm"
Case vbext_ct_StdModule
Sfx = ".bas"
Case Else
Sfx = ""
End Select
If Sfx <> "" Then
On Error Resume Next
Err.Clear
VBComp.Export ExportFolder & "\" & VBComp.Name & Sfx
If Err.Number <> 0 Then
MsgBox "Failed to export " & ExportFolder & "\" & VBComp.Name & Sfx
End If
On Error Goto 0
End If
Next
xl.Quit
End If
End Sub
-Adam
Altri suggerimenti
L'ho usato con successo negli ultimi anni per esportare il mio codice e salvarlo. Posso confermare che funziona in Office 2003, 2007. Presumo che funzioni anche nel 2000.
Quando stavo facendo molto sviluppo VBA di Excel, ho preso l'abitudine di esportare nel formato di testo per ogni file (modulo, ecc.) ogni volta che ho fatto una modifica (dal menu contestuale). Ho tenuto quei file nel controllo del codice sorgente insieme al file binario XLA. Questo ha funzionato abbastanza bene per me e non ha richiesto strumenti esterni.
SourceTools è utile quando sei attivo e funzionante, ma se hai bisogno di esportare da un gran numero di cartelle di lavoro di Excel, aprirle tutte ed esportarle potrebbe essere un po 'noioso.
VbaDiff (dichiarazione di non responsabilità: il mio prodotto) ha un'API in grado di leggere più file Excel ed estrarre il codice VBA. C'è un esempio di qui - potrebbe essere facilmente adattato all'esportazione il codice in un file, pronto per essere archiviato. Se sei bravo con SharpSvn, potresti probabilmente aggiungere il codice al repository mentre procedi!