Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Ejecutar aplicaciones de Windows desde VBA

| Sin comentarios

Hoy en día, la mayoría del software se diseña para soportar al menos algún tipo de comunicación con otras aplicaciones. La mayoría de los programas de Windows soportan, como mínimo, el Portapapeles para las operaciones copiar y pegar entre aplicaciones. Muchos productos de Windows soportan Intercambio de datos dinámico (DDE).

En este artículo se destacan los tipos de operaciones de multitarea reales que soportan las aplicaciones de Excel. Desde luego, también se proporcionan diversos ejemplos en VBA de como llamar a diversas aplicaciones.

 

Ejecutar una aplicación usando VBA

A menudo es muy útil ejecutar otras aplicaciones desde Excel. Por ejemplo, se pueden ejecutar programas de comunicaciones, archivos ejecutables (*.exe) desde Excel, u otros que necesitemos.

Para lograr la ejecución de hace uso de la función Shell de VBA, la cual hace relativamente sencilla la invocación de otros programas.

Descargar todos los ejemplos mostrados a continuación: Ejemplos ejecutar aplicaciones desde VBA

 

Ejemplo de abrir aplicación desde VBA

El mapa de caracteres es una de muchas aplicaciones que se encuentran disponibles en la instalación de Windows, con el siguiente código en VBA veremos como ejecutar este programa.

 

Sub Ejecutar()

On Error Resume Next

Programa = "Charmap.exe"

idTarea = Shell(Programa, 1)

If Err <> 0 Then

   MsgBox "No se puede iniciar " & Programa, vbCritical, "Error"

End If

End Sub

La ejecución de este código en VBA, llega a mostrar el mapa de caracteres:

Mapa de caracteres de Excel

 

La función Shell devuelve un número de identificación de tarea para la aplicación, este valor será útil sobre todo cuando tengamos varias aplicaciones, y queramos hacer referencia a una de ellas. 

El segundo parámetro para la función Shell sirve para definir cómo se presenta la aplicación (1 es el código para una ventana de tamaño normal, con el foco).

En caso exista un problema al ejecutar la función Shell, se generará un error, el cual es controlado por medio de la instrucción On Error,  el cual emite el Msgbox que observamos en el código en VBA.

La función Shell ejecuta la aplicación de forma asíncrona, es decir se ejecuta en paralelo, la ejecución de la macro continua de forma independiente a la aplicación invocada (luego de terminada la ejecución del código en VBA)

 

Evitar segunda instancia de una aplicación

En algunas aplicaciones, si se vuelve a llamar a la aplicación (la función Shell la llama de nuevo), se puede llegar a crear una segunda instancia (otra ventana de la misma aplicación). 

Por medio de la siguiente código en VBA, se evitará la generación de una nueva instancia: 

Sub aplicaciones()

On Error Resume Next

Programa = "calc.exe"

AppActivate ("Calculadora")

If Err <> 0 Then

   Err = 0

   idTarea = Shell(Programa, 0)

   If Err <> 0 Then

       MsgBox "No se puede iniciar " & Programa

, vbCritical, "Error"

   End If

End If

End Sub

 

La macro "Aplicaciones" usa la instrucción AppActivate para activar una aplicación que se está ejecutando (en este caso, la Calculadora de Windows). El argumento para AppActivate, es el título de la barra de Título de la aplicación, en este caso el título que tiene la aplicación es "Calculadora", si hay un error (es decir no existe una instancia de la aplicación), se ejecutará la función Shell un par de líneas después para llamar a la calculadora.  

 

Ejemplo de llamado a Word con VBA

El siguiente código en VBA sirve para crear (ejecutar) una instancia de Word, hacer algunos cambios en el archivo creado, como colocar un texto centrado, y finalmente cerrar el archivo en Word.

 

Sub Crear_Word()

Set Aplicación = CreateObject("Word.Application")

With Aplicación

.Visible = True

.Documents.Add

.Selection.Font.Bold = True

.Selection.Font.Size = 32

.Selection.typetext "Informe de VBA"

.Selection.ParagraphFormat.Alignment = 1 ' 1 es para centrar

.Quit

End With

End Sub

 

Para poder examinar otros ejemplos de VBA y Office, puede examinar: Macros en Office

 

Deja una respuesta

Los campos requeridos estan marcados con *.