miércoles, 23 de mayo de 2018

Trabajar, desde Excel-VBA, con otros programas de Microsoft

Cuando programas, una de las grandes ventajas de trabajar con Excel y toda la suite de Microsoft es la compatibilidad entre su lenguaje Visual Basic for Applications (VBA). De este modo podemos trabajar con más de uno de sus programas a la vez y/o interactuar entre ellos solo debemos aprender, tal como en el caso de Excel, los objetos, propiedades y otros de cada programa.

Una forma de abrir o crear archivos desde el VBA es usar la función “CreateObject”. La sintaxis de dicho método es la siguiente:

CreateObject (clase, nombre del servidor)

En donde “clase” es el nombre de la aplicación y/o la clase del objeto para crear y “nombre del servidor” es justamente el nombre del servidor de red en donde se crea el objeto. Si el nombre de servidor se deja en blanco, el objeto se creará en el equipo desde donde se usa la función.

Vamos a dejar de lado lo del servidor y centrarnos en la creación de objeto en nuestro propio equipo. Por ejemplo, vamos a suponer que queremos crear un archivo de Word nuevo entonces lo primero que vamos a hacer es declarar una variable con la que nombraremos a nuestro objeto “Word”, después crearemos el objeto, lo haremos visible (por defecto se crea el objeto como no visible) y agregaremos un documento nuevo:

Sub CreandoWord()
Dim MiappWord As Object 
Set MiappWord = CreateObject("Word.Application") 
MiappWord.Documents.Add 
MiappWord.Visible = True 
Set MiappWord = Nothing 
End Sub

La línea “MiappWord.Documents.Add”, que es la que agrega el documento nuevo de Word, puede ser obtenida fácilmente con la grabadora de macros de Word, aunque lo menciono solo como referencia ya que ese sería un tema ajeno a Excel.

Supongamos ahora lo que queremos es abrir un archivo ya existente, pues usaríamos algo como esto:

Sub CreandoWord() 
Dim MiappWord As Object 
Set MiappWord = CreateObject("Word.Application") 
MiappWord.Documents.Open ("D:\Filatelia\Actividades CAF 2018.docx") 
MiappWord.Visible = True 
Set MiappWord = Nothing 
End Sub

Una forma en que el editor de VBA nos puede “ayudar” con los objetos, propiedades y métodos de, en este caso, Word, es si declaramos la referencia respectiva:

No olviden que el 15.0 puede variar dependiendo de la versión de Office que estén usando. Luego cambiamos la declaración de variable a tipo “Word.Application” y tendremos el siguiente resultado:

También podemos, por ejemplo, abrir una presentación hecha en Power Point del siguiente modo:

Sub AbrirPPT() 
Dim appPpt As Object 
Set appPpt = CreateObject("Powerpoint.Application") 
appPpt.Presentations.Open Filename:=ThisWorkbook.Path & "\Hola.pptx" 
appPpt.ActivePresentation.SlideShowSettings.Run 
appPpt.Visible = True 
Set appPpt = Nothing 
End Sub 

En este caso el archivo de Power Point está en la misma carpeta que el archivo Excel. La línea que abren dicho archivo y la que activa la presentación, son parte del manejo de objetos y métodos de dicho programa pero lamentablemente en este caso dicho programa ya no cuenta con grabadora de macros que nos ayude pues Microsoft decidió retirarla desde la versión de Office 2007.

Es casi el mismo procedimiento para Infopath, Publisher, etc., pero no olvidemos que puede servir para otros programas como por ejemplo Internet Explorer:

Sub Guglear() 
Dim ie As ObjectDim 
PaginaWeb As String 
PaginaWeb = "www.google.com.pe" 
Set ie = CreateObject("InternetExplorer.Application") 
ie.Navigate PaginaWeb 
Do     
 DoEvents 
Loop Until ie.readyState = 4 
ie.Visible = True 
Set ie = Nothing 
End Sub  

Y eso es todo en esta ocasión. Hasta la próxima.

Abraham Valencia

No hay comentarios.:

Publicar un comentario