'*******************************************
'Francisco Garcia Aguado (Bhuo)
'Agosto de 2002
'Esto va en un modulo BAS
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
=======EL anterior codigo ponle en un modulo BAS
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.
Por ejemplo:
*Utilizo codigo VBA sin llamadas a la API
*Activa en Access 2000 la referencia a Microsfot Word 9,0
Function EscribeWord(RutaDocumento As String)
'En RutaDocumento se recoge la ruta completa
'incluido el fichero, por ejemplo C:\Mis Documentos\Carta.Doc
'=========== Declaro variables
Dim DocumentoWord As Word.Document
Dim VariableWord As Word.Application
Set VariableWord = New Word.Application
Set DocumentoWord = VariableWord.Documents.Add(RutaDocumento)
'Le hago visible, así tengo la oportunidad de ver los resultados
VariableWord.Visible = True
End Function
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)