Agregar area de imprsión a macro VBA Excel

Hpola DAM.

He visto por acá la macro para Establecer area de impresion pero no doy con ella.

Pues quisiera adicionarla a esta tu macro para que me imprima en PDF toda el area en una sola hoja y que el PDF no me muestre el contenido en mas de una

Sub EnviarPdf
'Por.Dante Amor
    ruta = "D:\Pagos a otros\"ThisWorkbook.Path & "\"
    punto = InStrRev(ThisWorkbook.Name, ".")
    libro = Left(ThisWorkbook.Name, punto - 1)
    nombre = "Pagos carozo" & ".pdf" 'libro & ".pdf"
    Sheets("Hoja1").Range("A2:I54").ExportAsFixedFormat _
        Type:=xlTypePDF, Filename:=ruta & nombre, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

1 Respuesta

Respuesta
1

Para que salga en una sola hoja

Sub EnviarPdf()
'Por.Dante Amor
    ruta = ThisWorkbook.Path & "\"
    punto = InStrRev(ThisWorkbook.Name, ".")
    libro = Left(ThisWorkbook.Name, punto - 1)
    nombre = "Pagos carozo" & ".pdf" 'libro & ".pdf"
    rango = "A2:I54"
    '
    With ActiveSheet.PageSetup
        .PrintArea = rango
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveSheet.Range(rango).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & nombre & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

Funciona con un inconveniente, me cria varias hojas. Explico

El rango que tengo en mi solicitud es A2:I54

Con este rango me cria 4 hojas, la 1ª hasta la columna H,  la 2ª y 4ª vacias, la 3ª con los datos solo de la columna I

Cambio el rango para A2:I44 que es precisamente hasta donde contiene datos, me cria 2 hojas. La 1ª hasta la columna H y la 2ª hoja sola con la columna I

E dificil para emplear

Sheets("Filtro").Range("H" & Rows.Count).End(xlUp).Row

Porque puede existir celdas en una o ota columna sin datos.

Entonces en una columna podria captar la ultima en A44 mientras que en otra seria A43, me quedaria la linea 44 por imprimir en PDF.

No se si me hice entender

Entendí desde la primera vez: necesitas que todo quede en una sola hoja. La macro me funciona, debes tener problemas con tu excel.

Prueba con la siguiente:

Sub EnviarPdf()
'Por.Dante Amor
    ruta = ThisWorkbook.Path & "\"
    nombre = "Pagos carozo" & ".pdf"
    rango = "A2:I54"
    '
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = "$A$2:$I$54"
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.708661417322835)
        .RightMargin = Application.InchesToPoints(0.708661417322835)
        .TopMargin = Application.InchesToPoints(0.748031496062992)
        .BottomMargin = Application.InchesToPoints(0.748031496062992)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperLetter
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    '
    ActiveSheet.Range(rango).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & nombre & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

La macro anterior, ¿te funciona co nel rango A2:I54? ¿O I44?

De una o otra, te hice el comentario de como me sale a mi,

Te envío libro de eemplo

Probaste la última macro va hasta la I54

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas