|
Otra pregunta muy habitual que se plantea con relativa frecuencia, es la de ¿Como abrir un documento del tipo que sea o simplemente lanzar un ejecutable EXE desde una aplicación de Access?
Primer método: Ejecutables. Orden SHELL
Si lo que queremos lanzar es un ejecutable (Como tal entendemos *.exe *.com y *.bat) podemos utilizar simplemente una simple llamada a la función nativa Shell. Por ejemplo:
Dim Retval
Dim Retval
Retval = Shell( _
"Notepad.exe " & CurrentProject.Path & "documento.txt", _
vbMaximizedFocus)
En este ejemplo, dado que Notepad.exe es un fichero ejecutable del sistema Windows, no hace falta indicar la ruta donde se encuentra. Además observamos como pasamos como parametro, la ruta y el fichero de texto que deseamos abrir y la forma en que queremos que se muestre la venta(vbMaximizedFocus).
Si el ejecutable no está registrado como tal en el sistema Windows, deberíamos pasar la ruta donde se encuentra dicho programa. Por ejemplo:
Shell "C:RutaMifichero.exe"
Algunos ejemplos interesantes de este uso de Shell:
Sub CargaExplorer()
'Cargaría en pantalla la carpeta C:Windows
Shell "explorer c:windows", vbMaximizedFocus End Sub
Function EnviaMensaje(Ip As String, mensaje As String)
'Esta funcion enviaría a una Ip de la Red local, pasada como parámetro, un
'mensaje
'que se mostraría en la pantalla del ordenador Remoto.
'Para sistemas Windows NT,2000, XP.
'Sustituye al propgrama PopPup de Win 98
Shell "Net Send " & Ip & " " & mensaje
End Function
Sub TomaHOraFechaServer()
'Otro curioso uso de Shell:
'Queremos sincronizar la fecha y hora
'de nuestro ordenador, con la que realmente
'existe y marca nuestro servidor:
Shell "net time \Pc_server /yes /set"
'Ten presente que el nombre de \Pc_server
'es el nombre del servidor de nuestra Red
'tal cual es visto bajo la Red local de Windows
End Sub Sub TransmiteFtp()
'Una muy curiosa.
'Como enviar comandos FTP desde Access
'con el programa FTP del propio Windows.
'Utilizamos conjuntamente la orden
'Shell que es la que lanza realmente
'la orden FTP
'En el fichero Ordenes.txt se encuentra
'recogidas las acciones que deseo realizar
'(Ver un ejemplo del fichero, debajo de este código)
Shell ("ftp -s:C:Ordenes.txt")
End Sub
Listado del fichero plano Ordenes.txt
open 216.7.190.133 Usuario Contraseña cd Directorii put c:Fichero.jpg bye
[Para ver más órdenes FTP, visitar el siguiente enlace:
http://www.iespana.es/canalhanoi/internet/comandosftp95.htm]
Y...así podríamos ir poniendo una serie de ejemplos interminables del uso de Shell en VBA de Access
Segundo Método: Utilizar la API de Windows
A veces, bien por comodidad, bien por que desconocemos el programa que tiene asociado un determinado tipo de fichero, es conveniente sustituir la nativa Shell, por una sencilla API. Por ejemplo, deseamos lanzar un documento Word, un documento *.snp...o bien, simplemente, abrir otra Mdb. El código de esta API es bien simple:
Option Explicit
'Declara esta API en un modulo
Declare Function Ejecuta 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
'Esto en cualquier formulario...
Sub Prueba()
Ejecuta 1, "open", _
"C:Carpetamifichero.mdb", "", "", 1 End Sub
Esta API anterior sirve para lanzar CUALQUIER fichero, del tipo que sea, sin saber a priori el programa ejecutable que tiene asociado. De no existir dicha asociación, simplemente no se ejecutaría nada
Tercer Método: Utilizar FollowHyperlink de VBA
Sub AbreDocumento()
If MsgBox("Abrir el documento: C:DocumentosDocumento.doc ¿Si /no?", _
vbYesNo, "Confirmar") = vbYes Then
FollowHyperlink "C:DocumentosDocumento.doc"
End If End Sub
Cuarto Método:WSH
Utilizar el método Shell del objeto Windows Scritp Host. En la página de Juan M. Afán de Ribera tienes un claro ejemplo comentado:
http://www.mvp-access.com/juanmafan/wsh/wshrun.htm
|