Esportazione del codice VBA da più documenti Excel da mettere in controllo versione [chiuso]

StackOverflow https://stackoverflow.com/questions/608872

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.

È stato utile?

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.

http://www.codeproject.com/KB/office/SourceTools.aspx

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!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top