Macro to export all pages individually as jpg or png



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!


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
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


jsherk's Profile:
View this thread:

--- news:// - complaints: (e-mail address removed) ---




I wondoer if this page still gets looked at. THis macro is awesome. Can anyone help me exporting high quality .pmg files? Would there be a different file extension?


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question