Exportação de código VBA partir de vários documentos do Excel para colocar no controle de versão [fechado]

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

Pergunta

Alguém sabe uma maneira de exportar o código VBA a partir de uma série de documentos do Excel, para que o código pode ser adicionado em um repositório Subversion? Sem ter que abrir manualmente cada documento e exportar o código.

Foi útil?

Solução

Você vai encontrar uma ferramenta para este aqui:

http://www.pretentiousname.com/excel_extractvba/index.html

É um script VBS que automatiza o Excel. Você pode modificá-lo de acordo com suas necessidades -. Note que não é perfeito (leia a página da Web para caveats)

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

Outras dicas

Eu usei isso com sucesso durante os últimos anos para exportar o meu código e salvá-lo. Eu posso confirmar que funciona no Office 2003, 2007. Eu suponho que ele funciona em 2000 também.

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

Quando eu estava fazendo um monte de desenvolvimento Excel VBA Eu tenho o hábito de exportar para o formato de texto para cada arquivo (módulo, etc) cada vez que eu fiz uma mudança (no menu de contexto). Eu mantive esses arquivos no controle de origem ao lado do binário XLA. Isso funcionou muito bem para mim e não requer quaisquer ferramentas externas.

SourceTools é bom quando você está instalado e funcionando, mas se você está precisando de exportação a partir de um grande número de planilhas do Excel, abrindo cada um e exportação que poderia ser um pouco entediante.

VbaDiff (disclaimer: meu produto) tem uma API que pode ler através de múltiplos arquivos de Excel e extrair o código VBA. Há um exemplo de aqui - que poderia ser facilmente adaptado para exportação o código em um arquivo, pronto para ser verificados em. Se você é bom com SharpSvn, você provavelmente poderia adicionar o código ao repositório que você vá!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top