Abrir cualquier tipo de archivo seleccionado desde una listbox

Hace días nuestro compañero Dante Amor me ayudo con una útil macro que me permite enlistar archivos pdf en varios listboxs con la posibilidad de verlos o imprimirlos a elección mediante un botón. Pues Ahora quisiera adaptar esa misma macro para permitir que no solo permita enlistar e imprimir pdf, quisiera poder abrir el archivo seleccionado sin importar el tipo de archivo y que este se abra con el programa que este preestablecido en la pc para abrir ese tipo de archivo seleccionado (mediante un botón). Pudiera ser que los botones de ver e imprimir se reduzcan a solo un botón para abrir el archivo.

Dim ruta1, ruta2, ruta3, ruta4
Private Sub CommandButton10_Click()
Call verPdf(ListBox4, archivo, ruta4)
End Sub
'
Private Sub CommandButton2_Click()
' llamada a imprimir de listbox1
    Call Imprimir_Pdf(ListBox1, archivo, ruta1)
End Sub
'
Private Sub CommandButton3_Click()
' llamada a imprimir de listbox2
    Call Imprimir_Pdf(ListBox2, archivo, ruta2)
End Sub
'
Sub Imprimir_Pdf(lista, archivo, carpeta)
'Imprime archivo según la lista
    If lista.ListCount = 0 Then
        MsgBox "No hay registros a imprimir"
        Exit Sub
    End If
    If lista.ListIndex = -1 Then
        MsgBox "Selecciona un Archivo para imprimir"
        Exit Sub
    End If
    archivo = lista.List(lista.ListIndex)
    ruta = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\"
    Shell ruta & "AcroRd32.exe /n /t " & carpeta & archivo
    DoEvents
End Sub
'
Sub verPdf(lista, archivo, carpeta)
'ver archivo según la lista
    If lista.ListCount = 0 Then
        MsgBox "No hay registros a imprimir"
        Exit Sub
    End If
    If lista.ListIndex = -1 Then
        MsgBox "Selecciona un Archivo para imprimir"
        Exit Sub
    End If
    archivo = lista.List(lista.ListIndex)
    ruta = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\"
    Shell ruta & "AcroRd32.exe " & carpeta & archivo
    DoEvents
End Sub

2 Respuestas

Respuesta
1

Agrego el resto del código

Private Sub CommandButton4_Click()
    'Cargar lista de archivos de carpetas
    ruta1 = "C:\......."
    ruta2 = "C:\......."
    ruta3 = "C:\......."
    ruta4 = "C:\......."
    '
    ListBox1. Clear
    ListBox2. Clear
    ListBox3. Clear
    ListBox4. Clear
    arch1 = Dir(ruta1 & "*" & TextBox1.Value & "*.pdf")
    Do While arch1 <> ""
        ListBox1.AddItem arch1
        arch1 = Dir()
    Loop
    arch2 = Dir(ruta2 & "*" & TextBox1.Value & "*.pdf")
    Do While arch2 <> ""
        ListBox2.AddItem arch2
        arch2 = Dir()
    Loop
    arch3 = Dir(ruta3 & "*" & TextBox1.Value & "*.pdf")
    Do While arch3 <> ""
        ListBox3.AddItem arch3
        arch3 = Dir()
    Loop
    arch4 = Dir(ruta4 & "*" & TextBox1.Value & "*.pdf")
    Do While arch4 <> ""
        ListBox4.AddItem arch4
        arch4 = Dir()
    Loop
End Sub
Private Sub CommandButton5_Click()
Call verPdf(ListBox1, archivo, ruta1)
End Sub
Private Sub CommandButton6_Click()
Call verPdf(ListBox2, archivo, ruta2)
End Sub
Private Sub CommandButton7_Click()
' llamada a imprimir de listbox3
    Call Imprimir_Pdf(ListBox3, archivo, ruta3)
End Sub
Private Sub CommandButton8_Click()
Call verPdf(ListBox3, archivo, ruta3)
End Sub
Private Sub CommandButton9_Click()
    Call Imprimir_Pdf(ListBox4, archivo, ruta4)
End Sub
Private Sub UserForm_Initialize()
    ruta1 = "C:\......."
    ruta2 = "C:\......."
    ruta3 = "C:\......."
    ruta4 = "C:\......."
'
    arch1 = Dir(ruta1 & "*.pdf")
    '
    Do While arch1 <> ""
        ListBox1.AddItem arch1
        arch1 = Dir()
    Loop
    arch2 = Dir(ruta2 & "*.pdf")
    Do While arch2 <> ""
        ListBox2.AddItem arch2
        arch2 = Dir()
    Loop
    arch3 = Dir(ruta3 & "*.pdf")
    Do While arch3 <> ""
        ListBox3.AddItem arch3
        arch3 = Dir()
    Loop
    arch4 = Dir(ruta4 & "*.pdf")
    Do While arch4 <> ""
        ListBox4.AddItem arch4
        arch4 = Dir()
    Loop
End Sub
Respuesta
2

En tu botón para VER pon el siguiente código:

Private Sub CommandButton15_Click()
    Call verArchivo(ListBox1, ruta1)
End Sub

También agrega el siguiente código a tu userform

Sub verArchivo(ListBox1, ruta1)
    arch = ListBox1.List(ListBox1.ListIndex, 0)
    ActiveWorkbook.FollowHyperlink ruta1 & arch
End Sub

Realiza la prueba con el listbox1, carga archivos en tu userform1, selecciona un archivo y presiona el botón VER


[' Si es lo que necesitas. No olvides valorar la respuesta. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas