Você que é desenvolvedor de aplicações com o MS Excel, tais como MIS, Dashboards,ou mesmo BSC possivelmente tem inúmeras soluções desenvolvidos por aí, sem que nem todas estejam documentadas.
Como faríamos isso utilizando um código simples e rápido?
Existem documentadores comerciais por aí, mas com o código abaixo poderá, pelo menos, listar todos os seus Módulos e Processos dentro destes das suas respectivas aplicações.
Crie um novo módulo, talvez com o nome de 'mdl_x_DocApplication' e cole nele o código abaixo:
- CÓDIGO:
'=============================================================================================
' Microsoft® Office Excel - DashBoard®, Developed by A&A - In Any Place®.
'
' CopyLeft© A&A - In Any Place, all Lefts Reserved.
'
' Cheque se existe referência ao "Microsoft Visual Basic for Applications Extensibility x.xx"
'=============================================================================================
Option Explicit
Const vbext_pp_none As Long = 0
Const vbext_pk_Proc As Long = 0
Dim x As Long
Dim objList()
Sub RetProject()
' Author: Date: Contact: URL:
' André Bernardes 22/09/2010 15:26 bernardess@gmail.com https://sites.google.com/site/vbabernardes/blogs
' Lista todos os módulos, e processos (functions & procedures) neles.
Dim oBJCT As Object
Dim Wb As Workbook
Let x = 2
For Each Wb In Workbooks
For Each oBJCT In Workbooks(Wb.Name).VBProject.VBComponents
If Workbooks(Wb.Name).VBProject.Protection = vbext_pp_none Then
Call LoadRoutines(Wb.Name, oBJCT.Name)
End If
Next
Next
With Sheets.Add
Let .[A1].Resize (, 3).Value = Array ("Aplicação", "Módulo", "Processos (Functions & Subs)")
Let .[A2].Resize (UBound (objList, 2), UBound(objList, 1)).Value = Application.Transpose (objList)
.Columns("A:C").Columns.AutoFit
End With
End Sub
Agora só precisará utilizar a SUB que carregará todo o conteúdo da sua aplicação (planilha)
- CÓDIGO:
Sub LoadRoutines(nWBook As String, vbCmp As String)
' Author: Date: Contact: URL:
' André Bernardes 23/11/2010 15:28 bernardess@gmail.com https://sites.google.com/site/vbabernardes/blogs
' Retorna detalhes para a SUB 'RetProject'.
' Listening: .
Dim vbCode As Object
Dim StartRow As Long
On Error Resume Next
Set vbCode = Workbooks(nWBook).VBProject.VBComponents(vbCmp).vbCode
With vbCode
Let StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
ReDim Preserve aList (1 To 3, 1 To x - 1)
Let aList(1, x - 1) = nWBook
Let aList(2, x - 1) = vbCmp
Let aList(3, x - 1) = .ProcOfLine(StartRow, vbext_pk_Proc)
Let x = x + 1
Let StartLine = StartRow + .ProcCountLines(.ProcOfLine(StartRow, vbext_pk_Proc), vbext_pk_Proc)
If Err Then Exit Sub
Loop
End With
Set vbCode = Nothing
End Sub
Esse código é prático porque pode acrescentar documentação na sua própria planilha. Se desejar pode mantê-la ali mesmo, talvez escondida, e solicitar que esta seja atualizada todas as vezes que for fechada, por exemplo. Ainda mais, poderá ampliar a análise de outros objetos e classes na aplicação.
Boa diversão!
Tags: Excel, auto, document, auto-documentação
André Luiz Bernardes
A&A® - Work smart, not hard.