Moving from Microsoft Office VBA to AppleScript:
MacTech's Guide to Making the Transition
Introduction
|
Table of Contents
Page Prev and Page Next buttons at bottom of the page.
|
April, 2007
Page 87
tell application "Microsoft Excel"
set page break of every range of active sheet to page break none
make new horizontal page break at end of active sheet with properties ¬
{location:range ("C10"), extent:page break full, horizontal page break type:¬
page break manual}
end tell
Setting Different Headers and Footers
At times, one wants a header or footer only on the first page of a multi-page printout. Excel does not have separate first page and even page headers and footers like Word does. To print a footer on only the first page, you‘ll need to cycle through the sheets, printing the first one with the footer, then remove the footer before printing the rest of the pages, then restore it to the worksheet at the end:
Public Sub FirstPageFooterOnly_OneSheet()
Dim sFooter As String
With ActiveWorkbook.Sheets("My Sheet")
sFooter = .PageSetup.LeftFooter 'Save footer
.PrintOut From:=1, To:=1
.PageSetup.LeftFooter = "" 'Remove from remaining pages
.PrintOut From:=2
.PageSetup.LeftFooter = sFooter 'Restore footer
End With
End Sub
This is a straightforward conversion to AppleScript, with no surprises – just look up the analogous names in the dictionary and all is OK:
tell application "Microsoft Excel"
tell sheet "My Sheet" of active workbook
set sFooter to left footer of page setup object --save footer
print out from 1 to 1
set left footer of page setup object to "" -- remove footer 2nd page
print out from 2
set left footer of page setup object to sFooter -- restore
end tell
end tell
Note that if you have Left, Center and Right footers, you‘ll need to save and restore all of them.
You can use the print out method to create a print preview within Excel:
ActiveSheet.Printout Preview:=True
print out active sheet with preview
That does the job, but for some reason the script hangs, as if it's tied up waiting for a response, perhaps from the printer driver. Here's the way to avoid that, so the script can move on directly to the next line, or finish if it's done:
tell application "Microsoft Excel"
activate
ignoring application responses
print out active sheet with preview
< Previous Page Next Page>
- SPREAD THE WORD:
- Slashdot
- Digg
- Del.icio.us
- Newsvine