Excel - Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

   
Vista:

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por leandro (4 intervenciones) el 29/07/2015 22:54:56
Buena tarde,

Tengo la siguiente macro para copiar una hoja activa y convertirla a pdf y guardarla, sin embargo necesito que el nombre se cree un nuevo archivo con el mismo nombre y que se adicione la fecha al nombre del pdf, es decir no quiero que se reescriba el archivo, si alguien sabe como le agradecería mucho:

Private Sub CommandButton1_Click()

Sheets("Check List").Range("A1:g62").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\C1051447\Desktop\Lista de Verificacion\Check List Blending de Crudo" '& Range("a1").value
Sheets("Check List").Range("A1").Select

End Sub

De antemano, gracias por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por Rafael (38 intervenciones) el 30/07/2015 10:26:38
Prueba con esto...

Igual puedes modificar el formato de la fecha y hasta incluir hora y minutos
1
2
3
4
5
6
7
8
9
Private Sub CommandButton1_Click()
    Sheets("Check List").Range("A1:G62").Select
    Filename = "C:\Users\C1051447\Desktop\Lista de Verificacion\Check List Blending de Crudo" & _
                    Range("a1").Value & Format(Now, "-yyyymmddhhnnss")
    Debug.Print Filename
    Selection.ExportAsFixedFormat Type:=xlTypePDF, _
          Filename:=Filename
    Sheets("Check List").Range("A1").Select
End Sub

Ya nos contaras....
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por leandro (4 intervenciones) el 30/07/2015 14:20:10
Gracias por tu colaboración, pero por algún motivo el archivo sigue teniendo el mismo nombre anterior (No aparece la fecha ni la hora como parte del nombre) y sigue sobrescribiendo al anterior,
te envió muestra del código que escribí

Private Sub CommandButton1_Click()

Sheets("Check List").Range("A1:g62").Select
Filename = "C:\Users\C1051447\Desktop\Lista de Verificacion\Check List Blending de Crudo" '& Range("a1").value & Format(Now, "-yyyymmddhhnnss")
Debug.Print Filename
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Filename
Sheets("Check List").Range("A1").Select

End Sub,

Envio ademas copia del archivo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por Rafael (38 intervenciones) el 30/07/2015 14:31:11
Es que lo tienes comentado mira:

Imagen

Quita la comilla simple:
1
Filename = "C:\Users\C1051447\Desktop\Lista de Verificacion\Check List Blending de Crudo" & Range("a1").value & Format(Now, "-yyyymmddhhnnss")

Otro detalle si te llevas este fichero a otro ordenador tu macro no funcionara... yo lo pondria en un directorio comun es mas si no existe el directorio lo crearia...

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por leandro (4 intervenciones) el 30/07/2015 14:40:37
Muchas gracias, ahora si funciona perfectamente (Y), como puedo crear el fichero del cual me hablas? y como configuro esa ruta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por Rafael (38 intervenciones) el 30/07/2015 14:55:24
Una valoracion positiva a mi respuesta no vendria mal jajajaja

Ahora tu has puesto esta ruta:
C:\Users\C1051447\Desktop\Lista de Verificacion\

En mi ordenador no existe ese directorio por lo que la macro enviaria un error ...

A mi me gusta dejar elegir al usuario (hay mas de mil modos de matar a la gallina, por lo que siempre es mejorable todo)

Yo de entrada usaria un nombre de fichero mas corto, y luego abriria un dialogo del sistema asi el usuario busca su directorio, y en su defecto hasta se crea uno nuevo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub CommandButton1_Click()
    Sheets("Check List").Range("A1:g62").Select
    Filename = GetFolder("C:\") & "\CLBC-" & _
                Range("a1").Value & Format(Now, "-yyyymmddhhnnss")
    Debug.Print Filename
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Filename
    Sheets("Check List").Range("A1").Select
 
End Sub
Function GetFolder(strPath As String) As String
    Dim fldr As FileDialog
    Dim sItem As String
    Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
    With fldr
        .Title = "Select a Folder"
        .AllowMultiSelect = False
        .InitialFileName = strPath
        If .Show <> -1 Then GoTo NextCode
        sItem = .SelectedItems(1)
    End With
 
NextCode:
    GetFolder = sItem
    Set fldr = Nothing
End Function

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por leandro (4 intervenciones) el 30/07/2015 15:00:35
Muchísimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JoaoM

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por JoaoM (161 intervenciones) el 30/07/2015 23:05:11
Hola Rafael

Podrias incluir variables para representar la fecha y hora sin que tenga que usar alguna celda para eso

1
2
3
4
Dim F As String
Dim H As String
F = Format(Date, ("dd-mm-yy")) 'Formato de Fecha. 'Day(Now())
H = VBA.Format(VBA.Time, "hh-mm") 'Formato de hora
Para incluir en

1
2
3
4
5
Range("A1:G62").Select 'rango inicio y final selecionado
 
Selection.ExportAsFixedFormat Type:=xlTypePDF, FileName:=ruta & nombre & F & H, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True

Con esas variables jamas reescribe el archivo anterior, a menos que sea creado unpo tras otro sin pasar un minuto perio para ello se le agregan los segundos a la variable H

H = VBA.Format(VBA.Time, "hh-mm-ss") 'Formato de hora con minutos ysegundos

Puede crear 2 variables mas, una para la ruta y otra para nombre

ruta "C:\nombrecarpeta\"
nombre = "pepe"

Completa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Seleccion_PDF_2() 'Copia el ancho de papel carta, Hoja unica desde un rango fijo
'SOLO para hoja activa.
Dim F As String
Dim H As String
F = Format(Date, ("dd-mm-yy")) 'Formato de Fecha. 'Day(Now()) 'Incluir en nombre
H = VBA.Format(VBA.Time, "hh-mm") 'Formato de hora 'incluir en nombre
 
nombre = "Pepe"   'Nombre para el archivo
ruta = "C:\Facturas\"
Range("A1:G62").Select 'rango inicio y final selecionado
'con ruta fija C:\0\Facturas
Selection.ExportAsFixedFormat Type:=xlTypePDF, FileName:=ruta & nombre & F & H, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True 'False no abre despues de guardado True si
 
    MsgBox "Se ha guardado a formato PDF en " & ruta & nombre & ".pdf", vbInformation
Range("A2").Select 'celda final selecionada para DESselecionar el rango
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JoaoM

Como hacer que una macro para guardar un excel en .pdf no reescriba el archivo anterior

Publicado por JoaoM (161 intervenciones) el 30/07/2015 23:23:38
Me falto algo

1
2
3
4
5
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & nombre & " " & F & " a las " & H, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True 'False no abre despues de guardado True si
 
    MsgBox "Se ha guardado a formato PDF en: " & ruta & nombre & " " & F & " a las " & H & ".pdf", vbInformation

VALORA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar