Como Usar VBA para controlar otras aplicaciones de Office

Índice
  1. Encuadernación anticipada
  2. Encuadernación tardía
  3. Ejemplo: control de PowerPoint desde Excel a través de VBA
  4. Ventajas Desventajas de cada tipo de Encuadernación
    1. Enlace anticipado: desventajas
    2. Encuadernación tardía: desventajas
    3. ¿Qué método de encuadernación debería elegir?

Si bien este sitio trata principalmente sobre el uso de Excel, hay ocasiones en las que Excel no es la mejor herramienta para el trabajo. Cada aplicación de Office está diseñada para diferentes tareas. Las tablas y gráficos se pueden preparar fácilmente en Excel, pero a menudo se exportan a PowerPoint, Word o Outlook para su presentación y distribución. Si bien todas estas son aplicaciones diferentes, todas incorporan el lenguaje de programación VBA. Esto significa que VBA en Excel se puede usar para controlar estas otras aplicaciones, y estas otras aplicaciones también se pueden usar para controlar Excel.

Esta serie de publicaciones trata sobre cómo podemos usar VBA para controlar otras aplicaciones de Office.

Para poder controlar otras aplicaciones, Excel necesita saber cómo hacer referencia a los diferentes objetos dentro de esa aplicación. Excel no sabe esto automáticamente, por lo que debemos decirle que use la biblioteca de objetos de la aplicación. Por ejemplo, si queremos que Excel cree una nueva diapositiva en una presentación de PowerPoint, primero debemos decirle a Excel que use la biblioteca de objetos de PowerPoint. Este proceso se conoce como vinculante. Una vez que Excel conoce la biblioteca de objetos de PowerPoint, puede controlar PowerPoint a través del modelo de objetos de PowerPoint. Esto no se limita sólo a PowerPoint; Word, Outlook, Adobe Acrobat y muchas otras aplicaciones tienen bibliotecas de objetos, todas las cuales Excel puede usar para hablar su idioma.

Al crear este vínculo entre Excel y la otra aplicación, hay dos opciones de enlace (1) enlace anticipado (2) enlace tardío. Esto es lo que consideraremos durante el resto de esta publicación.

Encuadernación anticipada

Dentro del editor VB es posible hacer referencia a la biblioteca de objetos para las aplicaciones de Office. Esta referencia a la biblioteca de objetos se guarda dentro del propio archivo de Excel. Por lo tanto, cada vez que se abre el archivo, la referencia a la Biblioteca de objetos sigue intacta y ya está disponible.

En el Editor de Visual Basic seleccione Herramientas – Referencias.

Aplicaciones de oficina de control VBA - Biblioteca de objetos

Seleccione la referencia de la aplicación y haga clic en Aceptar.

Aplicaciones de oficina de control VBA - Biblioteca de objetos Powerpoint

Para controlar la aplicación podemos crear una variable para contener la instancia de la aplicación. El código para hacer esto sería:

Dim pptApp As PowerPoint.ApplicationSet pptApp = Nuevo PowerPoint.Application

Si no se ha creado la referencia a la Biblioteca de objetos, aparecerá el siguiente mensaje de error.

Aplicación VBA Control Office: mensaje de error Sin biblioteca de objetos

Encuadernación tardía

Cuando se utiliza el enlace tardío, no es necesario crear una referencia a la biblioteca de objetos por adelantado. Al crear un objeto en VBA, podemos vincularnos a la biblioteca de objetos necesaria en el momento en que se ejecuta el código.

Dim pptApp As ObjectSet pptApp = CreateObject("PowerPoint.Application")

Ejemplo: control de PowerPoint desde Excel a través de VBA

Este código de ejemplo abrirá una nueva presentación de PowerPoint y escribirá texto en la primera diapositiva. Este ejemplo utiliza el enlace tardío

Sub ConnectToPowerpoint()'Establezca la aplicación como una variable usando Late BindingDim pptApp As ObjectSet pptApp = CreateObject("PowerPoint.Application")'Para usar Early Binding use estas dos líneas, en lugar de las líneas anteriores'Dim pptApp As PowerPoint.Application' Establecer pptApp = Nuevo PowerPoint.Application'Crear la presentación como un objetoAtenuar pptPresentation como objetoEstablecer pptPresentation = pptApp.Presentations.Add'Crear la diapositiva como un objeto (1 diapositiva, tipo de vista 2)Atenuar pptSlide como objetoEstablecer pptSlide = pptPresentation.Slides.Add (1, 2) ''Hacer Powerpoint VisiblepptApp.Visible = True'Seleccione la primera diapositivapptSlide.Select'Cambiar el texto en la primera SlidepptSlide.Shapes(1).TextFrame.TextRange.Text = "Hola PowerPoint"pptSlide.Shapes(2 ).TextFrame.TextRange.Text = "Hola Excel, encantado de conocerte"'Activar la aplicación PowerpointpptApp.Activate'Liberar la memoriaSet pptSlide = NothingSet pptPresentation = NothingSet pptApp = NothingEnd Sub

Ventajas Desventajas de cada tipo de Encuadernación

No es posible elegir un método de vinculación y atenerse a él durante el resto de su carrera en VBA. Cada tipo de Encuadernación tiene ciertas ventajas, que lo hacen mejor que el otro en determinadas circunstancias. Como sólo hay dos opciones, las ventajas de una son generalmente las desventajas de la otra.

Enlace anticipado: desventajas

Las bibliotecas de objetos se actualizan y cambian cada vez que se actualiza Office. Cuando esto sucede, las bibliotecas de objetos reciben un nuevo número de versión. Si la versión de Excel en la que se creó la referencia de la biblioteca de objetos es diferente a la versión en la que se ejecuta, el código no se ejecutará correctamente. Excel, por ejemplo, podría haber estado vinculado a la versión 12 de la biblioteca de objetos, pero es posible que sea necesario ejecutar el código en una PC con la versión 14 instalada.

Encuadernación tardía: desventajas

Generalmente, el código se ejecuta más lento y requiere más potencia de procesamiento. Excel no conoce la biblioteca de objetos de la otra aplicación, por lo que no se vincula hasta que se ejecuta el código.

Es más difícil escribir el código en VB Editor ya que no incluirá las opciones de Intellisense. (Intellisense es el nombre de la lista de métodos y propiedades que aparecen en VB Editor al escribir código VBA).

Los nombres de VBA para opciones y configuraciones no están disponibles. Por ejemplo, en PowerPoint VBA es posible pegar como una imagen de mapa de bits usando el código ppPasteBitmap, sin embargo, con el enlace tardío debe usar el número de enumeración, que es 1. Como resultado, el código es menos legible.

¿Qué método de encuadernación debería elegir?

Microsoft recomienda utilizar el enlace anticipado siempre que sea posible.

Para mí, la respuesta depende de si puedo garantizar qué versión de la Biblioteca de objetos está disponible. Por ejemplo, cuando la macro solo se ejecutará en una única PC, o donde existe una infraestructura y software de TI consistentes, entonces Early Binding es una buena opción. Sin embargo, si el código se va a distribuir y utilizar en infraestructura y software de TI desconocidos, entonces el enlace tardío es la mejor opción.

Debe poder utilizar ambas opciones para seleccionar la versión adecuada a sus circunstancias.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...