Access y VBA
Blog de Access y VBA del Buho


Inicio


Acerca de
Suscríbete al blog

Categorías
General [3] Sindicar categoría
Access con Codigo VBA [15] Sindicar categoría

Archivos
Septiembre 2005 [11]
Agosto 2005 [5]
Junio 2005 [2]

Sindicación (RSS)
Artículos
Comentarios

 


Lanzar un documento desde Access

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

Por ErBuho - 5 de Septiembre, 2005, 1:18, Categoría: Access con Codigo VBA
Enlace Permanente | Referencias (0)




<<   Septiembre 2005    
LMMiJVSD
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   

Enlaces
eGrupos
ZoomBlog

 

Blog alojado en ZoomBlog.com