Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations derfloh on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Macro to export all publisher pages individually as jpg or png

Status
Not open for further replies.

jsherk

Technical User
Jul 5, 2010
1
US
There is not much info out there on VBA programming for Publisher (I had a hard time finding it anyway), and I needed to export each page in a publisher file as an individual graphic (jpg or png). Although you can do a Save As and save each page one at a time, that becomes a little tedious, so I wrote this macro to export all the pages individually as a graphics file.

Hope this is helpful to somebody!

Code:
Sub Export_All_Pages_As_Graphic()

'Ask whether to proceed or not
BtnPress = MsgBox("Save all pages as individual pictures?", vbOKCancel)

'If they pressed OK then proceed, otherwise do nothing.
If BtnPress = 1 Then

    'Make sure two-page spread is set to FALSE, otherwise it might
    'export the two pages as one picture, instead of individually.
    'NOTE: This may not be necessary, but just in case!
    ActiveDocument.ViewTwoPageSpread = False
    
    'How many total pages in document?
    TotalPages = ActiveDocument.Pages.Count
    
    'Loop thru all pages one at a time
    For PgCnt = 1 To TotalPages
        
        'When you convert integer to string it adds a space in front, so need to remove the leading space
        PgNumber = Str(PgCnt)
        PgLen = Len(PgNumber)
        PgNumber = Right(PgNumber, PgLen - 1)
        
        'All names are three characters with leading zeros like 002.png 014.png 123.png
        If PgCnt < 10 Then
            PgFilename = "00" + PgNumber
        ElseIf PgCnt < 100 Then
            PgFilename = "0" + PgNumber
        Else
            PgFilename = PgNumber
        End If
        
        'Add the appropriate fileformat extension. You can use .png and .jpg for sure. There may be others, but did not test any.
        PgFilename = PgFilename + ".png"
        
        'Save the page
        ActiveDocument.Pages(PgCnt).SaveAsPicture (PgFilename)
    
    Next PgCnt
    
    'Tell them you are done and how many pages were saved
    MsgBox "DONE! Saved" + Str(TotalPages) + " pages."

End If

End Sub
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top