Change page orientation of specific pages within same worksheet when exporting to PDF
Results 1 to 2 of 2

Thread: Change page orientation of specific pages within same worksheet when exporting to PDF
Thanks Thanks: 0 Likes Likes: 0

  1. #1
    New Member
    Join Date
    Aug 2019
    Posts
    1
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Change page orientation of specific pages within same worksheet when exporting to PDF

    Hi,

    Is it possible to change the page orientation of specific pages within the same worksheet when exporting to PDF?

    I have written a macro that exports them all as portrait but I'd like to export certain pages as landscape as they have charts.

    Appreciate any assistance or guidance.

  2. #2
    Board Regular Worf's Avatar
    Join Date
    Oct 2011
    Location
    Rio, Brazil
    Posts
    3,707
    Post Thanks / Like
    Mentioned
    5 Post(s)
    Tagged
    2 Thread(s)

    Default Re: Change page orientation of specific pages within same worksheet when exporting to PDF

    Welcome to the Board

    For starters, we need to determine where the charts are:

    Code:
    Dim s$, pag(), ws As Worksheet
    
    
    Sub main()
    Dim i%, j%
    Set ws = ActiveSheet
    PageAddress2 False
    For i = 1 To ws.ChartObjects.count
        For j = LBound(pag) To UBound(pag)
            If Not Intersect(ws.ChartObjects(i).TopLeftCell, pag(j)) Is Nothing Then
                MsgBox "Found " & ws.ChartObjects(i).Name & " on page " & j
                Exit For
            End If
        Next
    Next
    End Sub
    
    
    Sub PageAddress2(colorcode As Boolean)
    Dim c%, v%, h%, cln%, rw%, hgth%, wth%, i%
    c = 1: s = ""
    ActiveWindow.View = xlPageBreakPreview
    ws.PageSetup.PrintArea = ""
    ws.PageSetup.PrintArea = ws.UsedRange.Address                               ' force page break recalculation
    ReDim Preserve pag(1 To (ws.VPageBreaks.count + 1) * (ws.HPageBreaks.count + 1))     'all pages on that sheet
    For v = 0 To ws.VPageBreaks.count
        For h = 0 To ws.HPageBreaks.count
            If v = ws.VPageBreaks.count Then
                wth = ws.UsedRange.Columns(ws.UsedRange.Columns.count).Column
            Else
                wth = ws.VPageBreaks(v + 1).Location.Column - 1
            End If
            If h = ws.HPageBreaks.count Then
                hgth = ws.UsedRange.Rows(ws.UsedRange.Rows.count).Row
            Else
                hgth = ws.HPageBreaks(h + 1).Location.Row - 1
            End If
            If v = 0 Then
                cln = 1
            Else
                cln = ws.VPageBreaks(v).Location.Column
            End If
            If h = 0 Then
                rw = 1
            Else
                rw = ws.HPageBreaks(h).Location.Row
            End If
            Set pag(c) = ws.Range(ws.Cells(rw, cln).Address & ":" & ws.Cells(hgth, wth).Address)     ' page address
            s = s & pag(c).Address & vbLf
            If colorcode Then pag(c).Interior.Color = RGB(CInt(250 * Rnd), CInt(250 * Rnd), CInt(250 * Rnd))
            c = c + 1
        Next
    Next
    End Sub
    Excel 2013 / Windows 8.1 (home)
    Excel 2013 / windows 7 (work)


Some videos you may like

User Tag List

Tags for this Thread

Like this thread? Share it with others

Like this thread? Share it with others

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •