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 33
set myRange to (move end of range myRange ¬
by a paragraph item count 1
set newRangeEnd to end of content of myRange
set amountMoved to newRangeEnd - rangeEnd
set rangeEnd to newRangeEnd
else
--if two paragraphs aren't identical, add the one after
--that to my range, so it can be checked, and drop
--the first one, since it is no longer of interest.
set myRange to (move end of range myRange ¬
by a paragraph item count 1
try
set newRangeEnd to end of content of myRange
set amountMoved to newRangeEnd - rangeEnd
set rangeEnd to newRangeEnd
set myRange to (move start of range myRange ¬
by a paragraph item count 1
on error -- errors because can't get newRangeEnd when
-- move end of range is missing value at end of document
set amountMoved to 0
end try
end if
end repeat
end tell
The differences result from the fact that in AppleScript you cannot alter a range and still have it continue to be the same range – once again, ranges are not dynamic. You can change the range all right, but then you have to reset the variable myRange to the newly altered one. In order to make that possible, the commands that alter ranges have to return the new range so we can get hold of it. This is almost straightforward with a command such as set range, which in its VBA version does not need to return a result at all, so in AppleScript it simply returns the altered range: just re-set the same variable (e.g. myRange) that you had for it before the set range and just carry on as you did in VBA.
For example, myRange is redefined here to end at the end of the third paragraph of the active document:
Set myRange = ActiveDocument.Paragraphs(1).Range
myRange.SetRange Start:=myRange.Start, _
< Previous Page Next Page>
- SPREAD THE WORD:
- Slashdot
- Digg
- Del.icio.us
- Newsvine