Macro Excel para crear carpeta con nombre = valor de celda y a continuación exportar hoja a pdf en la misma carpeta.

Tengo una macro que crea una carpeta en una ruta indicada nombrandola según el valor de varias celdas, lo que quiero en es que a continuación poder exportar a pdf la hoja activa y guardarla en la carpeta que se acaba de crear.

Sub CrearCarpeta()
    Ruta = "C:\OUT\"
    NumOut = Range("A2")
    DescripcionOut = Range("A3")
    Carpeta = "OUT_" & NumOut & "-" & Format(Date, "yyyy.mm.dd") & "-" & DescripcionOut
    If Dir(Ruta & "\" & Carpeta, vbDirectory) = "" Then
    MkDir Ruta & "\" & Carpeta
    End If
End Sub

Respuesta
1

Sería algo así:

Sub CrearCarpeta()
    ruta = "C:\OUT\"
    NumOut = Range("A2")
    DescripcionOut = Range("A3")
    Carpeta = "OUT_" & NumOut & "-" & Format(Date, "yyyy_mm_dd") & "-" & DescripcionOut
    If Len(Dir(ruta & Carpeta, vbDirectory)) = 0 Then
        ruta = ruta & Carpeta
        MkDir ruta
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & "\Gerencia.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    End If
End Sub

El nombre del archivo en el ejemplo es "Gerencia", que puedes sustituir por lo que te convenga.

Cambia a "False" la última línea (OpenAfterPublish=TRUE) para no abrir el documento creado.

Muchas gracias por tu respuesta, me funciona bien la macro.

Estoy intentando poner como nombre al archivo los valores de A4 y A5 separados por un guillón "-"

Gracias por tu ayuda, un saludo.

Entonces quedaría algo así:

Sub CrearCarpeta()
    ruta = "C:\OUT\"
    NumOut = Range("A2")
    DescripcionOut = Range("A3")
    Carpeta = "OUT_" & NumOut & "-" & Format(Date, "yyyy_mm_dd") & "-" & DescripcionOut
    If Len(Dir(ruta & Carpeta, vbDirectory)) = 0 Then
        ruta = ruta & Carpeta
        MkDir ruta
        archivo1 = Range("A4")
        archivo2 = Range("A5")
        nombrearchivo = archivo1 & "_" & archivo2 & ".pdf"
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & "\" & nombrearchivo, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
    End If
End Sub

1 respuesta más de otro experto

Respuesta
1

.10.01.17

Hola, Sylvain

Faltaría que nos indiques de dónde tomar el nombre del archivo a darle.

Saludos

Fernando

.

Si, perdona, el nombre del archivo debería ser igual al valor de la celda A4 y A5 separada por un guillón "-".

Gracias por tu ayuda, un saludo.

.

Ok,

Asumiré que colocas el nombre en una variable, porque siempre es el mismo o puedes ahcer que lo tome de una celda determinada.

En tal caso esta rutina, con algunos ajustes, haría lo que solicitas:

Sub creaPDF()
'---- Variables modificables ----
'=== Sylvain, modifica estos datos de acuerdo a tu proyecto:
NombArch = "PIRULO" ' o puede ser el que figure en una celda, por ejemplo: Range("A4").Value
Muestralo = False ' true para que deje el PDF en pantalla o False para que no lo haga
    ruta = "C:\OUT\"
    ruta = "C:\2mails\"
    NumOut = Range("A2")
    DescripcionOut = Range("A3")
'---- fin Variables
'  
ruta = ruta & IIf(Right(ruta, 1) = "\", "", "\")
Carpeta = "OUT_" & NumOut & "-" & Format(Date, "yyyy.mm.dd") & "-" & DescripcionOut
    If Dir(ruta & Carpeta, vbDirectory) = "" Then
        MkDir ruta & Carpeta
    End If
        ChDir ruta & Carpeta
'Generación de pdf de hoja actual:
'  
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & Carpeta & "\" & NombArch & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=Muestralo
End Sub

Coméntame si es lo que buscabas -y, en tal caso, agradeceré que califiques mi contribución- o escribeme de nuevo aquí, si necesitas más apoyo con esto.

Saludos

Fernando

(Buenos Aires, Argentina)

.

.#crear PDF

Vaya, me adelanté. Pero no estuve muy lejos.

De acuerdo a tu dato, la rutina final sería esta:

Sub creaPDF()
'---- Variables modificables ----
'=== Sylvain, modifica estos datos de acuerdo a tu proyecto:
NombArch = ActiveSheet.Range("A4").Value & "-" & ActiveSheet.Range("A5").Value
Muestralo = False ' true para que deje el PDF en pantalla o False para que no lo haga
    ruta = "C:\OUT\"
    ruta = "C:\2mails\"
    NumOut = Range("A2")
    DescripcionOut = Range("A3")
'---- fin Variables
ruta = ruta & IIf(Right(ruta, 1) = "\", "", "\")
Carpeta = "OUT_" & NumOut & "-" & Format(Date, "yyyy.mm.dd") & "-" & DescripcionOut
    If Dir(ruta & Carpeta, vbDirectory) = "" Then
        MkDir ruta & Carpeta
    End If
        ChDir ruta & Carpeta
'Generación de pdf de hoja actual:
'
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & Carpeta & "\" & NombArch & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=Muestralo
End Sub

Saludos nuevamente.

Fer

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas