Como programar en VBA sin conocer el modelo de objetos

La complejidad del código en VBA (entendiendo por complejidad el uso de instrucciones larguísimas y muy estructuradas en lugar de instrucciones simples) nace de la decisión de Microsoft de convertir sus programas en modelos de objetos permitiendo "un código más limpio con una síntaxis y semántica más consistente". En mi opinión esta es una elección poco afortunada que complica innecesariamente la codificación y responde más a la moda de la OOP que a otra cosa. No hay que perder de vista que el uso del modelo de objetos es SOLO una metodología que pretende ordenar y estructurar el código, tal como lo fue en su época la programación estructurada. Existe actualmente una tendencia a deificarla bastante absurda.

La idea de estudiar el modelo de objetos de Microsoft (la Microsoft Foundation Classes) me parece una tontería para un programador casual (como yo), más aún considerando que cuando se llega a dominar algo tan especializado, esto ya comienza a caer en desuso por obsolecencia.

Todo este largo preámbulo para indicarles un truco que les permitirá conocer el código para programar cualquier cosa en VBA sin necesidad de estudiar nada (que rico ¿no?). Un ejemplo práctico: en nuestro ejercicio anterior abrimos una form que nos permitió ingresar nombre, dirección y apellido y luego los escribió en un formulario del Word. Ahora vamos a colocar un encabezado con el nombre y un pie de página con la leyenda "página # de #". Para conocer el código hacemos lo siguiente:

Abrimos una página en blanco y nos vamos a Herramientas, Macros, Grabar nueva macro y Aceptar (quedará con el nombre por defecto Macro1). Aparecerá una imagen de "grabadora" que indica que estamos grabando la macro. Entonces nos vamos a Ver, Encabezados y pies de página, escribimos el encabezado y el pie de la manera deseada y apretamos el botón que detiene la grabadora.

Luego nos vamos aHerramientas, Macros, Macros, Editar y allí tenemos TODO el codigo, listo para ser cortado y pegado en nuestra aplicación, que en éste caso es:

Sub Macro2()
'
' Macro2 Macro
' Macro grabada el 24-12-98 por TOMAS BRADANOVIC
'
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
      ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
      ActivePane.View.Type = wdOutlineView Or ActiveWindow.ActivePane.View.Type _
      = wdMasterView Then
      ActiveWindow.ActivePane.View.Type = wdPageView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.TypeText Text:= _
"Tomás Bradanovic, Consultoría en Proyectos de Inversión Públ"
Selection.TypeText Text:="ica"
Selection.TypeParagraph
Selection.HeaderFooter.Shapes.AddLine(72#, 93.6, 540#, 93.6).Select
If Selection.HeaderFooter.IsHeader = True Then
      ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Else
      ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
End If
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldNumPages
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldPage
NormalTemplate.AutoTextEntries("Página X de Y").Insert Where:=Selection. _
Range
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

¿Que tal?, ahora podrían por ejemplo sustituir el string "Tomás Bradanovic...." por TextBox1.Text o cualquier otra variable y el asunto funciona igual.

Como ejercicio (y entretención) les recomiendo que obtengan con éste método el código para colocar doble espacio, para imprimir, para modificar el tamaño de papel, el tipo y seteo de la impresora, los tipos de letra...en fin todo lo que se les ocurra, luego pueden cortar y pegar el código en el ejercicio de la clase anterior a ver como les queda.

Bueno, con este dato yo creo que tienen entretención para rato y además es una manera indolora de aprenderse el modelo de objetos de Microsoft, practiquen y diviertanse.

 

Autor: Tomás Bradanovic
http://members.spree.com/sip/tombrad

Entrega 1 - Entrega 2 - Entrega 3 - Entrega 4 - Entrega 5 - Entrega 6 - Entrega 7 - Entrega 8 - Entrega 9
Descargar