Views

Histats

Vitrine

Prever: VBA Excel - Auto-Documentando suas Aplicações

Twitter: @bernardess|bernardess @ gmail . com| Skype: InAnyPlace |Blog Office VBA|Blog Excel|Blog Access


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!


LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...