

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 86
set draft to false
set first page number to 1
set order to down then over
set black and white to false
set zoom to 100
end tell
end tell
The only tiny difference of any sort is that AppleScript does not have a documented term for the xlAutomatic constant, so I've set the first page number to 1, the usual "automatic". A bit of checking has discovered that the Long constant in VBA of xlAutomatic is -4105, and that may work if you try it in AppleScript too.
There is also an equivalent version of the macro possible in the old XL 4 Macro language, faster and more efficient than either VBA or AppleScript, which is likely to still work in Office 2008. This is not the place for XL4M code but you might care to look into it if it's still going strong in Office 2008. AppleScript can run XL4M macros via the run VB macro command that can pass arguments to a macro and call it using an A1 or R1C1 range reference, a range object, or the macro's name. So it does look as if the text of the macro could be stored in a cell on a macro sheet and run from there.
Inserting a Page Break
You can set or clear page breaks using the page break property:
This will set a single page break to the left of column C and above row 10:
With ActiveWorkbook.Sheets("Sheet1")
.Cells.PageBreaks – xlNone 'Clear all manual pagebreaks
.Range("C10").PageBreak = xlPageBreakManual
End With
In AppleScript:
tell application "Microsoft Excel"
tell sheet "Sheet1" of active workbook
set page break of every range to page break none
set page break of range "C10" to page break manual
end tell
end tell
Use page break of every range – not every cell.
In VBA, you can also specify a horizontal or vertical page break by adding to the worksheet‘s HPageBreaks or VPageBreaks collection:
With ActiveWorkbook.Sheets("Sheet1")
.HPageBreaks.Add Before:=.Range("C10")
End With
In AppleScript it's actually a bit simpler, since horizontal page break and vertical page break are separate classes to begin with.
tell sheet "Sheet3" of active workbook
make new horizontal page break at end with properties ¬
{location:range ("C10")}
end tell
Note: once again the insertion location at end (or at beginning) is essential, or the script errors. (The Excel AppleScript Reference gives a similar example but neglects, or doesn't know about, at end.)
You can actually specify more properties than that, if you wish:
< Previous Page Next Page>

- SPREAD THE WORD:
- Slashdot
- Digg
- Del.icio.us
- Newsvine