En la primera parte del curso vimos como es posible programar en VBA sin saber nada acerca del Modelo de Objetos de Microsoft. Partimos de la base que éste era una complicación innecesaria y algo incomprensible para las personas comunes y corrientes.
Así lo era para mi al menos cuando comencé a trabajar en VBA, pero con el tiempo, las ideas subyacentes del Modelo de Objetos se terminan infiltrando y comienza la curiosidad por saber de que se trata y si realmente sirve para algo.
La clave para entender todo este asunto se encuentra en la ayuda del Word (asumire que estamos usando Word 2000, si no lo tiene no importa el ejemplo igual vale), vamos a Información de programación, Referencia de Visual Basic para Word y Objetos de Microsoft Word. Aparecerá un intrincado organigrama lleno de nombres mas o menos cripticos, partiendo en el tope de la jerarquía por el casillero llamado 'Aplication', y hacia abajo sale una gran cantidad de ramas (Microsoft dice que Word tiene "alrededor de 108 objetos").
Al hacer click sobre un casillero (digamos, Document) aparecerá la explicación del objeto junto con los demás objetos de más baja jerarquía, como muestra la figura
Si todo esto todavía le resulta incomprensible, no se preocupe. Así me pareció también a mi y, de hecho todavía hay muchas ramas que no he explorado y no se para que sirven. Pero la razón de ser del Modelo de Objetos está en ese organigrama. Se supone que si alguien comprende el modelo no necesitará más ayuda que eso para programar cualquier cosa que necesite en VBA. Se supone también que todas las capacidades del lenguaje están representadas allí, no habrán características "indocumentadas" como en los buenos viejos tiempos.
A mi entender, ese es el objetivo esencial del Modelo de Objetos de Microsoft. Una vez que entendemos "el secreto" de los números, podemos contar hasta el infinito sin necesidad de haberlo hecho nunca antes, igual cosa para multiplicar, sumar, etc. porque entendemos el modelo de los números decimales y los algoritmos respectivos. De manera similar, alguien que entiende el Modelo de Objetos no necesitará conocerlo en detalle (como los antiguos "expertos" que conocían todas las intrincadas sutilezas de un lenguaje de programación), bastará con que tenga a mano la referencia (el organigrama), para poder inferir cualquier procedimiento.
El haber modelado el lenguaje de manera lógica, permite además la programación automática, esa misma que cuando grabamos un macro nos escribe automáticamente el código correspondiente, y que nos permitió programar en la primera parte del curso sin saber nada acerca del Modelo de Objetos
Todo esto es la explicación en términos generales, entremos ahora a los detalles específicos. En beneficio de la comprensión seré algo liberal con la fraseología y tal vez a veces mis términos no sean los exactos, pero hay que tener en cuenta que es el rigor semántico lo que hace tan dificil de comprender el dichoso modelo, asi que me tomaré mis libertades sin mayor remordimiento. Para fines didácticos consideraremos los objetos del Word solamente.
Word es una aplicacion de Microsoft, así como lo son Excel, Power Point, Access, etc.O sea que existe un objeto llamado Aplication, que representa al Word mismo, en general.
Cuando queremos programar algo que tenga que ver con el Word en general, y no con un documento especifico, usamos el objeto Aplication. Por ejemplo
With Application .WindowState = wdWindowStateNormal .Height = 450 .Width = 600 End With
Hace partir al Word en una ventana normal, con un tamaño de 450x500 pixeles
Fijense bien: el objeto es Aplication y tiene métodos y propiedades como WindowState, Heigth y Width (acuerdense que en el curso anterior vimos que With...End With se usa para evitarnos tener que repetir palabras, en este caso la palabra Aplication)
Así si nos vamos al organigrama de los objetos del Word y hacemos click en el cuadro Aplication, aparecerán todos los métodos y todas las propiedades que podemos usar con el objeto.
En las lecciones siguientes iremos analizando los principales objetos con sus métodos más usados. Los ejemplos de código los he obtenido del excelente artículo de Microsoft llamado Microsoft Word Objects.obtenido del Microsoft Office Developer Forum de Internet. Una referencia de primera que actualmente estoy traduciendo para mi uso personal