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 47
end tell
To add a Chart in VBA, you use the Type argument with the Add Method, on the Sheets Collection. (Charts are not Worksheets, but another subvariety of Sheet.)
ActiveWorkbook.Sheets.Add Type:=xlChart
But the worksheet type property of sheet class , which includes sheet type chart as one of its types, is read-only, and cannot be set even at inception (as sometimes is the case with some commands, we shall see later). If you try to set the type to sheet type chart when making a new sheet this property just gets ignored: you end up with a new worksheet as usual. (This is not unexpected, nor a bug. Just an indication that AppleScript's make new with properties is not the same as VBA's Add Method.)
In AppleScript, chart sheet is a class, corresponding to Chart in VBA, and a subclass of sheet. Unlike in VBA, you can make one directly, so there's no problem:
tell application "Microsoft Excel"
make new chart sheet at active workbook
end tell
This is just a completely blank sheet, ready for its chart. (chart is a read-write property of chart sheet, and can be set along with most of its own properties.) Charts are complex objects. We will look into them later.
Open a new window on a worksheet
In VBA, multiple windows can be used to look at different parts of the same worksheet:
ActiveWindow.NewWindow
Windows.Arrange ArrangeStyle:=xlHorizontal
In AppleScript you can make the new window, but there's no arrange command. You have to work it out and do it the hard way:
tell application "Microsoft Excel"
tell active workbook
set {l, t, h, w} to window 1's {left position, top, height, width}
new window on workbook
tell window 1 to set {left, top, height, width} to {l, t, h / 2, w}
tell window 2 to set {left, top, height, width} to {l, (t + h / 2), h / 2, w}
end tell
end tell
Height is measured in points starting at the top of the screen as (0, 0). That is why we add half the height to get half way down. Note that active window is a "dynamic" reference to whichever window is in the front at any time you refer to it, even when you have set a variable to it – the variable "moves" to the current active window. Setting, or even copying, a variable to active window of the application doesn't "hold" the window: when a new window is made it becomes active window, and the variable, which is a reference, now refers to the new one.
If you're not careful, you can end up doing both the operations on the same window and end up with a quarter-size one halfway off the screen, and a full-size one exactly where it was to begin with. That's why it's easier to just refer to window 1 and window 2 of the workbook after the new one is made. In this case it doesn't matter which is the active one.
You can set the view of a window using the View property(xlNormalView, xlPageBreakPreview, or xlPageLayoutView):
ActiveWindow.View = xlNormalView
In AppleScript:
set view of active window to normal view
Working with Existing Worksheets
< Previous Page Next Page>
- SPREAD THE WORD:
- Slashdot
- Digg
- Del.icio.us
- Newsvine