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 di subversion? Senza dover aprire manualmente ciascun documento ed esportare il codice.Esportazione del codice VBA da più documenti Excel da inserire nel controllo versione
risposta
troverete uno strumento per questo qui:
http://www.pretentiousname.com/excel_extractvba/index.html
Si tratta di uno script VBS che automatizza Excel. Puoi modificarlo in base alle tue esigenze, nota che non è perfetto (leggi la pagina web per i caveat).
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
Quando stavo facendo un sacco di sviluppo di Excel VBA ho preso l'abitudine di esportazione verso il formato di testo per ogni file (modulo, ecc) ogni volta che ho fatto un cambiamento (da il menu di scelta rapida). Ho tenuto quei file nel controllo sorgente a fianco del file binario XLA. Questo ha funzionato abbastanza bene per me e non ha richiesto strumenti esterni.
Inoltre, il processo di esportazione dei componenti VBA (codice, moduli) può essere automatizzato con alcuni codifica VBA: vedere qui su [Ron de Bruin] (https://www.rondebruin.nl/win/s9/win002.htm) e qui [Chip Pearson] (http://www.cpearson.com/excel/vbe.aspx). Ho modificato il codice di de Bruin e ho usato un flag nel nome ("SHARE _....") così, mentre scorre su di esso, esporta solo i file che voglio. – tjejojyj
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.
SourceTools è buono una volta che sei attivo e funzionante, ma se stai bisogno di esportare da un gran numero di cartelle di lavoro Excel, aprendo ognuno e l'esportazione potrebbe essere un po 'noioso.
VbaDiff (disclaimer: il mio prodotto) ha un'API in grado di leggere più file Excel ed estrarre il codice VBA. C'è un esempio di here - potrebbe essere facilmente adattato per esportare il codice in un file, pronto per essere archiviato. Se stai bene con SharpSvn, potresti probabilmente aggiungere il codice al repository mentre vai!
Questo script è ben lungi dall'essere perfetto. Dopo aver cercato sul Web per molto tempo ho finalmente trovato qualcosa che funziona davvero: http://stackoverflow.com/a/25984759/2780179 . Ha codice di importazione, esportazione, formattazione del codice e altro. È possibile utilizzarlo immediatamente, non è necessario modificare alcuna cartella di lavoro esistente. – CodeKid