Palabras clave:
averiguar, programa, aplicación, ejecutable, asociado, extensión, APIAutor:
Buho / Agosto 2002Extraído de:
La web del BúhoObjetivo: 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.
Esto en un módulo bas (independiente)
'*******************************************
'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
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
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)
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.