Exportação de código VBA partir de vários documentos do Excel para colocar no controle de versão [fechado]
-
03-07-2019 - |
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.
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.
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á!