Ejecutar aplicaciones de Windows desde Excel vba

En la sección Windows de nuestro EXCELeINFO add-in se incluyen accesos directos a programas de Windows, mismos que son llamados desde vba con el método LoadFile.

Dicho método viene declarado en la shell32.dll por lo que será necesario hacer una referencia en el módulo donde pensemos incluir el código.

Abrir programas de Windows desde Excel vba

Figura 1. EXCELeINFO add-in contiene accesos directos a progamas de Windows.

Código de la macro

En un módulo normal y antes de todas las macros o funciones vamos a hacer referencia al archivo shell32.dll con el siguiente código.

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) _
As Long

Las siguientes macros nos  permitirán abrir cada uno de los programas de Windows, tales como:

  1. Bloc de notas.
  2. Calculadora.
  3. Mapa de caracteres.
  4. Explorador de Windows.
  5. Visor de portapapeles.
Sub LoadCalc()
LoadFile "Calc.exe"
End Sub
'
Sub LoadNotepad()
LoadFile "Notepad.exe"
End Sub
'
Sub LoadExplorer()
LoadFile "Explorer.exe"
End Sub
'
Sub LoadClipbrd()
LoadFile "Clipbrd.exe"
End Sub
'
Sub LoadCharmap()
LoadFile "Charmap.exe"
End Sub

Para abrir una página Web en el navegador prederminado usamos el método ShellExecute.

Sub LoadMyBlog()
ShellExecute 0, "Open", "http://blogs.itpro.es/exceleinfo/", "", "", 1
End Sub

Fe de erratas:
Hacía falta incluir la función LoadFile.

Sub LoadFile(FileName As String)
ShellExecute 0, “Open”, FileName, “”, “”, 1
End Sub

You may also like...

9 Responses

  1. Carlos Cerda says:

    Excelente, se puede utilizar para crear nuestros propios menús y desde Excel ejecutar las aplicaciones o archivos .exe necesarios

  2. Angelo says:

    Sale que hay que declarar funcion sub o function :

    • sergioacamposh says:

      Todo el código de Private Declare Function hay que ponerlo en una sóla línea.

      • Angelo says:

        Gracias.

        • JoaoM says:

          Tengo Excel 2013 con W 8.1 x64

          Sea una sola línea o 3 com oesta aquí, no me funciona.

          Al pegar la declaración en el modulo, me sale todo en rojo y no pasa de ahí

          • sergioacamposh says:

            Acabo de modificar el artículo con una fe de erratas. Hacía falta la función LoadFile para que funcione.

            Sub LoadFile(FileName As String)
            ShellExecute 0, “Open”, FileName, “”, “”, 1
            End Sub

  3. victor gonzalez says:

    Una consulta, si quiero solo maximizar la venta de una aplicacion abierta y no abrirla se puede realizar?
    Saludos

  4. geousuario says:

    Sergio, felicitaciones por este magnifico aporte, es un tema poco difundido en los demás blogs especializados como el suyo.
    Aprovecho la oportunidad para hacerle una consulta. Cuál sería el código para abrir una página web como el ejemplo “LoadMyBlog” con el chrome o el firefox?.
    Según los ejemplos, dichos navegadores se abririan asi:

    Sub LoadChrome()
    LoadFile “Chrome.exe”
    End Sub
    Sub LoadChrome()
    LoadFile “firefox.exe”
    End Sub
    Para el ejemplo:
    Sub LoadMyBlog()
    ShellExecute 0, “Open”, “http://blogs.itpro.es/exceleinfo/”, “”, “”, 1
    End Sub
    Cual sería el código para abrir dicho blog con chrome o firefox, ya que no vincula el navegador.
    Gracias por su atención.
    Saludos.

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: