Autor Tema: Averiguar programa asociado  (Leído 2476 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 200
Averiguar programa asociado
« en: Octubre 10, 2012, 02:57:10 pm »
Palabras clave: averiguar, programa, aplicación, ejecutable, asociado, extensión, API
Autor: Buho / Agosto 2002
Extraído de: La web del Búho

Objetivo:
Sé abrir un documento de Word desde Access. Pero ¿Como puedo abrir cualquier otro fichero, por ejemplo, un Bmp, Jpg o con cualquier otra extensión? Quiero que se abra desde Access, aprovechando el programa que Windows tiene como predeterminado para abrir dicho fichero.

Cita de: Buho
Esto en un módulo bas (independiente)

Código: [Seleccionar]
'*******************************************
'Francisco Garcia Aguado (Bhuo)
'Agosto de 2002

Option Compare Database
Option Explicit
Private Const MAX_FILENAME_LEN = 256
Private Declare Function FindExecutableA Lib "shell32.dll" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long


Function DameEjecutable(Fichero) As String
On Error GoTo Err_Comando7_Click
  Dim i As Integer
  Dim s2 As String
 
  s2 = String(MAX_FILENAME_LEN, 32) & Chr$(0)
 
  i = FindExecutableA(Fichero & Chr$(0), vbNullString, s2)
 
  If i > 32 Then
     DameEjecutable = Left$(s2, InStr(s2, Chr$(0)) - 1)
  Else
     DameEjecutable = ""
  End If
 
Exit_Comando7_Click:
    Exit Function

Err_Comando7_Click:
    MsgBox "Aviso Nº: " & Err.Number & " " & Err.Description, vbCritical + vbOKOnly, "Información"
    Resume Exit_Comando7_Click
End Function

Cita de: Buho
de tal forma que cuando quieras saber, por ejemplo, la aplicacion que tienes asociada el fichero Prueba.jpg, no tienes mas que llamar a la funcion desde cualquier parte de tu aplicacion (En esta caso desde el boton de comando que mencionas), de esta forma:

Imaginemos que tu documento Word se llama Clientes.Doc y está situado en la ruta
C:\Mis Documentos

Pon en el boton de comando que mencionas

Código: [Seleccionar]
  Dim NombreEjecutable
  Dim Retval

  NombreEjecutable = Trim(DameEjecutable("c:\Mis Documentos\Clientes.doc"))
  If Len(NombreEjecutable) = 0 Then
   Exit Sub
  End If
  RetVal = Shell(NombreEjecutable & " " & "C:\Mis Documentos\Clientes.doc", 3)

Cita de: Buho
Y de esta forma lanzarías el Word y visualizarias el fichero.
Identico proceso puedes hacer con cualquier fichero de cualquier extension. (Siempre que Windows la reconozca como valida y ela ruta y el documento existan)


Insisto, para documentos Word y Excel, el propio lenguaje VBA nos brinda otras posibilidades para interactuar con codigo propio de VBA y abrir este tipo de documentos, interactuar con ellos etc.