Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Resumen

Puede llamar a la función de Windows API ShellExecute() desde una macro de Visual Basic para Aplicaciones para iniciar otro programa en Microsoft Windows. Utilice ShellExecute() en lugar de Shell (una instrucción de Visual Basic) o WinExec() (una función API de Windows) para evitar la limitación siguiente de los comandos de este último:

Con cáscara y WinExec(), no se puede iniciar una aplicación especificando sólo un nombre de archivo. Por ejemplo, la siguiente instrucción Shell producirá un error:

x = Shell("C:\My Documents\Book1.Xls")

Más información

Microsoft proporciona ejemplos de programación fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos. Siguiente es un ejemplo de Visual Basic para Aplicaciones macro que llama a la función de Windows API ShellExecute() . ShellExecute() determina si ya se está ejecutando Microsoft Excel; Si es así, carga Book1.xls en la sesión actual de Microsoft Excel. Si Microsoft Excel no se está ejecutando, ShellExecute() inicia Microsoft Excel y carga Book1.xls.

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

Declare Function apiFindWindow Lib "User32" Alias "FindWindowA" _
(ByVal lpclassname As Any, ByVal lpCaption As Any) As Long

Global Const SW_SHOWNORMAL = 1

Sub ShellExecuteExample()
Dim hwnd
Dim StartDoc
hwnd = apiFindWindow("OPUSAPP", "0")

StartDoc = ShellExecute(hwnd, "open", "C:\My Documents\Book1.xls", "", _
"C:\", SW_SHOWNORMAL)
End Sub

La función ShellExecute() abre o imprime el archivo especificado. La siguiente es información acerca de ShellExecute() desde páginas 901 904 de la Microsoft Windows Software Development Kit (SDK) "Del programador de referencia, volumen 2:Functions."

Parámetros

                
Parameter Description
---------------------------------------------------------------------------

hwnd Identifies the parent window.

lpszOp A string specifying the operation to perform. This
string can be "open" or "print".

lpszFile Points to a string specifying the file to open.

lpszParams Points to a string specifying parameters passed to
the application when the lpszFile parameter
specifies an executable file. If lpszFile points to
a string specifying a document file, this parameter
is NULL.

lpszDir Points to a string specifying the default
directory.

fsShowCmd Specifies whether the application window is to be
shown when the application is opened. This
parameter can be one of the following values:

Value Meaning
---------------------------------------------------------------------

0 Hides the window and passes activation to another
window.

1 Activates and displays a window. If the window is
minimized or maximized, Windows restores it to its
original size and position (same as 9).

2 Activates a window and displays it as an icon.

3 Activates a window and displays it as a maximized
window.

4 Displays a window in its most recent size and
position. The window that is currently active remains
active.

5 Activates a window and displays it in its current
size and position.

6 Minimizes the specified window and activates the
top-level window in the system's list.

7 Displays a window as an icon. The window that is
currently active remains active.

8 Displays a window in its current state. The window
that is currently active remains active.

9 Activates and displays a window. If the window is
minimized or maximized, Windows restores it to its
original size and position (same as 1).

Devuelve

El valor devuelto es el identificador de instancia de la aplicación que se abrió o se imprime, si la función se realiza correctamente. (Este controlador también podría ser el identificador de una aplicación de servidor DDE.) Una devolución de valor menor o igual a 32 especifica un error.

Errores

La función ShellExecute() devuelve el valor 31 Si no hay ninguna asociación para el tipo de archivo especificado, o si no hay ninguna asociación para la acción especificada en el tipo de archivo. Los demás valores de error posibles son:


Value Meaning
---------------------------------------------------------------------------

0 System was out of memory, executable file was corrupt, or
relocations were invalid.

2 File was not found.

3 Path was not found.

5 Attempt was made to dynamically link to a task, or there
was a sharing or network-protection error.

6 Library required separate data segments for each task.

8 There was insufficient memory to start the application.

10 Windows version was incorrect.

11 Executable file was invalid. Either it was not a Windows
application, or there was an error in the .exe image.

12 Application was designed for a different operating system.

13 Application was designed for MS-DOS 4.0.

14 Type of executable file was unknown.

15 Attempt was made to load a real-mode application
(developed for an earlier version of Windows).

16 Attempt was made to load a second instance of an
executable file containing multiple data segments that
were not marked read-only.

19 Attempt was made to load a compressed executable file. The
file must be decompressed before it can be loaded.

20 Dynamic-link library (DLL) file was invalid. One of the
DLLs required to run this application was corrupt.

21 Application requires Microsoft Windows 32-bit extensions.

Comentarios

El archivo especificado por el parámetro lpszFile puede ser un archivo de documento o un archivo ejecutable. Si es un archivo de documento, esta función abre o imprime, dependiendo del valor del parámetro lpszOp. Si es un archivo ejecutable, esta función lo abre, incluso si la lpszOp apunta a la cadena "imprimir".

Referencias

Para obtener más información acerca de cómo utilizar el código de ejemplo de este artículo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

212536 OFF2000: cómo ejecutar código de ejemplo de artículos de Knowledge Base
Para obtener más información acerca de cómo obtener ayuda con Visual Basic para Aplicaciones, consulte el siguiente artículo de Microsoft Knowledge Base:

226118 OFF2000: recursos de programación para Visual Basic para Aplicaciones


SDK de Microsoft Windows "referencia del programador, volumen 2: funciones," páginas 901 904

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×