Excel a pdf Guardar como
Tengo el siguiente codigo que logre en la red, me guarda TODO el libro en formato PDF, tenga 3 o 100 hojas el cual quiero agregarle alguna(s) lineas para que al guardar si existe el nombre del archivo me pregunte si quiero reemplazarlo o no.
Si respondo si, que lo reemplace, si respondo no que me de oportunidad de darle otr onombre.
Tal como se hace normalmente hasta con el blockNotas.
Pregunto porque de codigo y programacion nada se praticamente, conocimientos nulos, esa la razon por la cual recurro a ustedes.
Tal vez el MsgBox este demas o quede sobrante para lo que yo quiero. Si es sobrante, puede quitarse
Option Explicit
'Copia el libro completo en un PDF
' Nota: en este módulo, la macro llama a la funcion en el módulo
Sub RDB_Workbook_To_PDF()
Dim FileName As String
'Llamar a la función con los argumentos correctos
FileName = RDB_Create_PDF(ActiveWorkbook, "", True, True)
'Para un nombre fijo de archivo y sobrescribirlo cada vez que ejecute las macros, use tambien la siguiente linea
'RDB_Create_PDF(ActiveWorkbook, "C:\0\By_Jota.pdf", True, True)
If FileName <> "" Then
' Ok, encontrará el PDF donde la guardó
' Puede ejecutar la macro para correo aquí si desea
Else
MsgBox "No es posible crear el PDF, posibles razones:" & vbNewLine & _
"Complemento Microsoft no está instalado" & vbNewLine & _
"Usted ha cancelado el cuadro de diálogo Guardar como:" & vbNewLine & _
"No es correcta la ruta para guardar el archivo en arg 2" & vbNewLine & _
"Usted no desea sobrescribir el PDF existente, si existe", vbInformation, "INFORMACIÓN"
End If
End Sub
---------------------------------------------------------------------------
Function RDB_Create_PDF(Myvar As Object, FixedFilePathName As String, _
OverwriteIfFileExist As Boolean, OpenPDFAfterPublish As Boolean) As String
Dim FileFormatstr As String
Dim Fname As Variant
' Comprobar si está instalado el complemento de Microsoft
If Dir(Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" _
& Format(Val(Application.Version), "00") & "\EXP_PDF.DLL") <> "" Then
If FixedFilePathName = "" Then
'Abrir el cuadro de diálogo Guardar como: para introducir un nombre de archivo para el pdf
FileFormatstr = "PDF Files (*.pdf), *.pdf"
Fname = Application.GetSaveAsFilename("", filefilter:=FileFormatstr, _
Title:="Create PDF")
'Si se cancela el cuadro de diálogo, Salir de la función
If Fname = False Then Exit Function
Else
Fname = FixedFilePathName
End If
' Con subescribir fila si existe = False comprobamos si el PDF ya existe en la carpeta y salir de la función si es True
If OverwriteIfFileExist = True Then
If Dir(Fname) <> "" Then Exit Function
End If
'Ahora el nombre del archivo es correcto, Publicar como PDF
On Error Resume Next
Myvar.ExportAsFixedFormat Type:=xlTypePDF, FileName:=Fname, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=OpenPDFAfterPublish
On Error GoTo 0
' Si Acepta la publicación, la función devolverá el nombre del archivo
If Dir(Fname) <> "" Then RDB_Create_PDF = Fname
End If
End Function
Si respondo si, que lo reemplace, si respondo no que me de oportunidad de darle otr onombre.
Tal como se hace normalmente hasta con el blockNotas.
Pregunto porque de codigo y programacion nada se praticamente, conocimientos nulos, esa la razon por la cual recurro a ustedes.
Tal vez el MsgBox este demas o quede sobrante para lo que yo quiero. Si es sobrante, puede quitarse
Option Explicit
'Copia el libro completo en un PDF
' Nota: en este módulo, la macro llama a la funcion en el módulo
Sub RDB_Workbook_To_PDF()
Dim FileName As String
'Llamar a la función con los argumentos correctos
FileName = RDB_Create_PDF(ActiveWorkbook, "", True, True)
'Para un nombre fijo de archivo y sobrescribirlo cada vez que ejecute las macros, use tambien la siguiente linea
'RDB_Create_PDF(ActiveWorkbook, "C:\0\By_Jota.pdf", True, True)
If FileName <> "" Then
' Ok, encontrará el PDF donde la guardó
' Puede ejecutar la macro para correo aquí si desea
Else
MsgBox "No es posible crear el PDF, posibles razones:" & vbNewLine & _
"Complemento Microsoft no está instalado" & vbNewLine & _
"Usted ha cancelado el cuadro de diálogo Guardar como:" & vbNewLine & _
"No es correcta la ruta para guardar el archivo en arg 2" & vbNewLine & _
"Usted no desea sobrescribir el PDF existente, si existe", vbInformation, "INFORMACIÓN"
End If
End Sub
---------------------------------------------------------------------------
Function RDB_Create_PDF(Myvar As Object, FixedFilePathName As String, _
OverwriteIfFileExist As Boolean, OpenPDFAfterPublish As Boolean) As String
Dim FileFormatstr As String
Dim Fname As Variant
' Comprobar si está instalado el complemento de Microsoft
If Dir(Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" _
& Format(Val(Application.Version), "00") & "\EXP_PDF.DLL") <> "" Then
If FixedFilePathName = "" Then
'Abrir el cuadro de diálogo Guardar como: para introducir un nombre de archivo para el pdf
FileFormatstr = "PDF Files (*.pdf), *.pdf"
Fname = Application.GetSaveAsFilename("", filefilter:=FileFormatstr, _
Title:="Create PDF")
'Si se cancela el cuadro de diálogo, Salir de la función
If Fname = False Then Exit Function
Else
Fname = FixedFilePathName
End If
' Con subescribir fila si existe = False comprobamos si el PDF ya existe en la carpeta y salir de la función si es True
If OverwriteIfFileExist = True Then
If Dir(Fname) <> "" Then Exit Function
End If
'Ahora el nombre del archivo es correcto, Publicar como PDF
On Error Resume Next
Myvar.ExportAsFixedFormat Type:=xlTypePDF, FileName:=Fname, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=OpenPDFAfterPublish
On Error GoTo 0
' Si Acepta la publicación, la función devolverá el nombre del archivo
If Dir(Fname) <> "" Then RDB_Create_PDF = Fname
End If
End Function