** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Lanzar documento desde Access
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoLanzar documento desde Access

 Responder Responder
Autor
Mensaje
buho Ver desplegable
Administrador
Administrador
Avatar
Abuelo FELIZ, nieto desesperado

Unido: 10/Abril/2004
Localización: Valladolid
Estado: Sin conexión
Puntos: 11321
Enlace directo a este mensaje Tema: Lanzar documento desde Access
    Enviado: 09/Agosto/2013 a las 20:42

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:\Ruta\Mifichero.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

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:\Carpeta\mifichero.mdb", "", "", 1
End Sub

 

Esta API 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:\Documentos\Documento.doc ¿Si /no?", _

      vbYesNo, "Confirmar") = vbYes Then

    FollowHyperlink "C:\Documentos\Documento.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.es/juanmafan/wsh/wshrun.htm



Editado por buho - 09/Agosto/2013 a las 20:44
Por fin he hecho algo bueno, ser abuelo ¡y porque no lo he hecho yo!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable