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 88
end ignoring
end tell
If Office 2008 or a later version introduces its own script menu for Excel, and you run the script from there, ignoring application responses will have no effect. It only works directed at an application other than the one running the script. So run this script from the system's script menu.
Comments, though they‘re attached to cells, are elements of the sheet, not the cell (range). Inserting a comment is done using the add comment command, but it is rather different in AppleScript than in VBA:
Public Sub AddComment()
Dim cmt As Comment
With Worksheets("Sheet1").Range("A10")
Set cmt = .Comment ' Check to see if comment exists
If cmt Is Nothing Then _ ' if not, add one
Set cmt = .AddComment
End With
With cmt
.Text Text:="My Comment" ' Overwrite existing comment
.Visible = True
.Shape.Select 'Select to allow editing
End With
End Sub
In AppleScript:
tell application "Microsoft Excel"
tell range "A10" of active sheet
set cmt to its Excel comment -- no error if nothing (dummy comment)
set vis to visible of cmt --get any property , returns missing value if empty
if vis is missing value then
set cmt to add comment
end if
end tell
tell cmt
Excel comment text text "My comment" --overwrites, but omit 'over write'!
set visible to true
select its shape object -- to allow editing
end tell
end tell
In VBA, you set a variable to the putative comment, and if it's Nothing you Add one. Normally in AppleScript, you'd do the same thing by putting it in a try/error block, and if there's no value (it might require calling the variable you set to it to discover that), you would get an error, and in the on error block you'd add the comment.
But the actual behavior is much stranger. Excel comments have got to be one of the weirdest objects around. When a cell does not have a comment, it still has some sort of dummy Excel comment property, which does not error. (Note that you must include the its – its Excel comment – if in a tell block targeted at the range. Otherwise it does error, even if there is a genuine comment there, and you'll never get hold of it.)
However, all the properties of this dummy Excel comment return missing value. So we check for its visible property, and if that returns missing value – neither true nor false – we know we need to add a comment. We do that with the add comment command in the Excel Suite. Now we could include its comment text parameter to add the text then and there, but that would make the script rather complicated since cells with genuine comments have not been dealt with yet. So we just add comment, exactly as the VBA macro did, and handle all of them the same way after the if/end if block concludes.
< Previous Page Next Page>
- SPREAD THE WORD:
- Slashdot
- Digg
- Del.icio.us
- Newsvine