Saltar al contenido

Exportar a PDF problema sobreescribir


FloP

Recommended Posts

publicado

Hola buenas tardes foreros.

Retomando una macro que tenía a medias, a ver si podéis ayudarme porque mis conocimientos en VBA no son muy amplios y por más referencias que miro en ejemplos de "exportar a pdf" no saco el error. Describo:

- Función: Exportar un rango de la hoja a pdf en función de 2 variables, para esto utilizo "if" con ocultar y mostrar filas para que entrase justo en 1 o 2 hojas.

- Errores:  1 - El msgbox de la ruta donde guarda el archivo SIEMPRE muestra la ruta donde se ENCUENTRA el excel, NO donde lo ha guardado.

                  2 - Da igual el nombre que pongas en en el msgbox de "guardar como", siempre utiliza el pre-programado.

                  3 - A raíz del problema 2, si ya as exportado un pdf e intentas exportar otro a la misma carpeta, te avisa de si quieres sobreescribirlo (aunque le hayas puesto otro nombre).

 

Juraría que el error está en el orden del exportar + los "if/else" utilizados para ocultar y mostrar filas, ¿o quizás no?, como ya dije, mis conocimientos en VBA son escasos y para mi la secuencia tiene su lógica...

Adjunto el Excel con la macro (macro: "Exportar_a_pdf_goteros").

Un saludo y muchas gracias ;).

macros_test pdf.xlsm

publicado

Hola

En esta línea le dice que la variable es la carpeta en dónde está el archivo "original":

strPath = ThisWorkbook.Path

Entonces, en este MsgBox, le dices que repita esa carpeta:

MsgBox "Archivo guardado en:" & vbCrLf & vbCrLf & strPath, vbInformation

En esta línea le das valor a la variable que en todas las instrucciones haces que se use como nombre del archivo, por ende siempre llevará el nombre de esa celda más el formato o "nombre pre programado" como dices tú:

strName = Range("P1") & Format(Now(), "_ddmmyy") & "_GOT"

Aquí teóricamente le das el valor ingresado a esa variable, pero nunca llegas a usar la variable:

myFile = Application.GetSaveAsFilename(InitialFileName:=strName, FileFilter:="PDF (*.pdf), *.pdf")

Esta otra línea no hace nada:

Application.DefaultFilePath = strPath

Corrige todo eso y ya.

publicado

Vale después de un rato y unas pruebas ya entiendo el error.

La idea de: 

Application.DefaultFilePath = strPath

es darle un nombre pre-programado al archivo;PERO, creo que el error está en la verificación de si existe ya un archivo con ese nombre:

myFile = Application.GetSaveAsFilename(InitialFileName:=strName, FileFilter:="PDF (*.pdf), *.pdf")

If myFile = False Then GoTo Line1

If Dir(strName & ".pdf") = strName & ".pdf" Then
  Ans = MsgBox(strName & ".pdf ya existe." & vbCrLf & "¿Desea reemplazarlo?", vbQuestion + vbYesNo, "Confirmar Guardar como")
   If Ans = vbYes Then GoTo Line0
   If Ans = vbNo Then GoTo Line1

Eso o no te entendí bien Abraham.

P.D.:  - He arreglado la ruta del Msgbox. cambiando la variable de strName a myFile

          - Correcto, " Application.DefaultFilePath = strPath" no hace nada

publicado

Me explico, para hacer la verificación, utilizo strName, cuando debería de utilizar el "FileName" obtenida al introducir un dato en myFile.

¿como narices obtengo ese dato? cual es el comando? ¿FileName? :S

publicado

He corregido el problema de comprobar si el archivo existe mediante la función "Len()" :

If Len(Dir(myFile)) = 0 Then GoTo Line0 Else

 

Ahora todo funciona :D, el código quedaría así:

myFile = Application.GetSaveAsFilename(InitialFileName:=strName, FileFilter:="PDF (*.pdf), *.pdf")

If myFile = False Then GoTo Line1

If Len(Dir(myFile)) = 0 Then GoTo Line0 Else

  Ans = MsgBox(myFile & " ya existe." & vbCrLf & "¿Desea reemplazarlo?", vbQuestion + vbYesNo, "Confirmar Guardar como")
   If Ans = vbYes Then GoTo Line0
   If Ans = vbNo Then GoTo Line1

y las opciones de pdf así (ojo FileName.=myFile"):

       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=myFile, Quality:=xlQualityStandard, _
       IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
       ActiveSheet.Range("a56:a70").EntireRow.Delete

 

Marcard el tema como solucionado ;)

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.