Macro para que que se abra un PDF (sin autoguardar)

Actualmente tengo un macro que me abre un PDF y gaurda automáticamente. No quiero que guarde, sol oque abra:

'PDF
Ruta = ThisWorkbook.Path & "\"

If P = "Preferred Rate" And A = 3 Then
On Error Resume Next
Sheets("Preferred Rate 3").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Preferred Rate Plus 3 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
End If

If P = "Preferred Rate" And A = 5 Then
On Error Resume Next
Sheets("Preferred Rate 5").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Preferred Rate Plus 5 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
End If

If P = "Escalator" And A = 3 Then
On Error Resume Next
Sheets("Escalator 3").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Escalator Plus 3 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
End If

If P = "Escalator" And A = 5 Then
On Error Resume Next
Sheets("Escalator 5").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Escalator Plus 5 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
End If

If P = "Escalator" And A = 10 Then
On Error Resume Next
Sheets("Escalator 10").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Escalator Plus 10 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
End If

1 respuesta

Respuesta
1

H o l a:

Lo que hace tu macro es guardar una hoja como Pdf y después de guardar la hoja se abre el Pdf, pero primero guarda la hoja.

Ahora, lo que estás pidiendo, es que solamente abra el Pdf, pero el Pdf deberá estar creado, si el Pdf no está creado, pues simplemente no podrá abrirlo.

Si estás de acuerdo con lo anterior, pon lo siguiente en tu macro.

    ruta = ThisWorkbook.Path & "\"
    hoja = P & " " & A
    For Each h In Sheets
        If UCase(h.Name) = UCase(hoja) Then
            existe = True
            Exit For
        End If
    Next
    If existe Then
        Set h = Sheets(hoja)
        arch = "Cotización a " & Trim(h.Cells(6, 3)) & " (" & P & " Plus " & A & " años).pdf"
        If Dir(ruta & arch) <> "" Then
            Shell "C:\Archivos de programa\Adobe\Reader 10.0\Reader\AcroRd32.exe " & ruta & arch, vbNormalFocus
            'ActiveWorkbook.FollowHyperlink ruta & arch
        Else
            MsgBox "El archivo no existe", vbCritical
        End If
    Else
        MsgBox "No existe la hoja : " & hoja, vbExclamation
    End If

Lo que hace la macro es tomar el valor que tengas en las variables P y A; buscar la hoja, con el dato de la hoja, tomar el  dato de la celda C6; con esos datos buscar el archivo, si el archivo existe entonces se abre el pdf.

Prueba y me comentas.



':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

No me sale. No sé si lo esté poniendo mal. Te mando el archivo. 

https://www.dropbox.com/s/pmyk4c5jrrq7q7n/Cotizador%20Beechwood%20%2825%20mayo%29.xlsm?dl=0 

¿Y qué es lo que no te sale?

Antes de cualquier cosa, me puedes comentar sobre esto:

  • Ahora, lo que estás pidiendo, es que solamente abra el Pdf, pero el Pdf deberá estar creado, si el Pdf no está creado, pues simplemente no podrá abrirlo.
  • ¿Lo qué quieres es abrir un pdf creado?

Tienes que reemplazar tu macro por mi macro.

No puedo descargar tu archivo, envíame tu archivo con la macro que yo te puse.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Patricio Solano Barragán” y el título de esta pregunta.

Ya te lo envié.  Lo que estás pidiendo es que el macro cree el PDF y lo abra, más no lo guarde automáticamente.

Mil gracias.

Pero sigo sin entender qué quieres.

Te pongo las opciones y me dices cuál quieres:

a) Que guarde el pdf y lo abra (esta opción es la que tienes actualmente)

b) Que guarde el pdf y que no lo abra

c) Que abra un pdf existente. Si el archivo pdf no existe no se puede abrir. Esta opción solamente funciona si el pdf ya fue creado.

d) Que abra el pdf sin guardar el pdf en un archivo. Esta opción no existe. No se puede abrir un pdf sin guardarlo como un archivo pdf.

Si no es ninguna de las 4 opciones anteriores, entonces dime qué quieres que haga la macro.

Te anexo la macro para pedir la ruta:

Private Sub Cotizar_Click()
'Datos
I = Val(Cells(7, 3))
P = Cells(9, 3)
A = Cells(10, 3)
N = 0
'Datos Filtro
If P = "" Then
MsgBox "Seleccionar un plan disponible", vbCritical, "Plan no válido"
Else
End If
If A = "" Then
MsgBox "Seleccionar un periodo de plan disponible", vbCritical, "Periodo de plan no válido"
Else
End If
'Preferred Rate
    'Periodo de Plan no disponible
    If P = "Preferred Rate" And A = 10 Then
    MsgBox "Seleccionar un periodo de plan disponible.", vbCritical, "Periodo de plan no válido"
    Else
    End If
    'Inversión Mínima
    If P = "Preferred Rate" And I < 50000 Then
    MsgBox "La inversión mínima aceptada es de $50,000.", vbCritical, "Inversión mínima"
    Else
    End If
    'Inversión Máxima
    If P = "Preferred Rate" And I > 3000000 Then
    MsgBox "La inversión máxima aceptada es de $3'000,000.", vbCritical, "Inversión máxima"
    Else
    End If
'Escalator
    'Inversión Mínima
    If P = "Escalator" And I < 100000 Then
    MsgBox "La inversión mínima aceptada es de $100,000.", vbCritical, "Inversión mínima"
    Else
    End If
    'Inversión Máxima
    If P = "Escalator" And I > 3000000 Then
    MsgBox "La inversión máxima aceptada es de $3'000,000.", vbCritical, "Inversión máxima"
    Else
    End If
'PDF
'ruta = ThisWorkbook.Path & "\"
With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Selecciona una carpeta"
    .AllowMultiSelect = False
    .InitialFileName = ThisWorkbook.Path & "\"
    If .Show <> -1 Then Exit Sub
    ruta = .SelectedItems(1) & "\"
End With
If P = "Preferred Rate" And A = 3 Then
On Error Resume Next
Sheets("Preferred Rate 3").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Preferred Rate Plus 3 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Else
End If
If P = "Preferred Rate" And A = 5 Then
On Error Resume Next
Sheets("Preferred Rate 5").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Preferred Rate Plus 5 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Else
End If
If P = "Escalator" And A = 3 Then
On Error Resume Next
Sheets("Escalator 3").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Escalator Plus 3 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Else
End If
If P = "Escalator" And A = 5 Then
On Error Resume Next
Sheets("Escalator 5").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Escalator Plus 5 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Else
End If
If P = "Escalator" And A = 10 Then
On Error Resume Next
Sheets("Escalator 10").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ruta & "Cotización a " & Trim(Cells(6, 3)) & " (Escalator Plus 10 años).pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Else
End If
End Sub
' : )
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
' : )

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas