MacTech Network:   MacForge.net  |  Computer Memory  |  Register Domains  |  Printer Supplies  |  Cables  |  iPod Deals  |  Mac Deals  |  Mac Book Shelf


  MacTech Magazine

The journal of Macintosh technology

 
 
Visit Smalldog.com

Magazine In Print
  About MacTech  
  Home Page  
  Subscribe  
  Archives DVD  
  Submit News  
  Submit a Tip!  
  Get a copy of MacTech RISK FREE  
Google
Entire Web
mactech.com
Mac Community
More...
MacTech Central
  by Category  
  by Company  
  by Product  
MacTech News
  MacTech News  
  Previous News  
  MacTech RSS  
Article Archives
  Show Indices  
  by Volume  
  by Author  
  Source Code FTP  
Inside MacTech
  Writer's Kit  
  Editorial Staff  
  Editorial Calendar  
  Back Issues  
  Advertising  
Contact Us
  Customer Service  
  MacTech Store  
  Legal/Disclaimers  
  Webmaster Feedback  

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.

Would you like a hard copy
or PDF of this Guide?

You can get a hard copy sent to you
AND download a PDF now ($19.95)
, or

... just download a PDF ($9.95).

Either way, you get a complimentary
MacTech Magazine Subscription

courtesy of the
Microsoft Mac Business Unit


 

  Magazine Reg. Price:  $50.00 value  
  Guide Reg. Price:  $40.00 value  
  You Save:  over $80.00!  

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

Inserting a Comment

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.



 


Click here to find out more about our best subscription bundle deal ever!
2 years of the magazine, and the all new MacTech DVD ... at 70% off!



Click on the cover to
see this month's issue!

TRIAL SUBSCRIPTION
Get a RISK-FREE subscription to the only technical Mac magazine!
 
 


MacTech Magazine. www.mactech.com
Toll Free 877-MACTECH, Outside US/Canada: 805-494-9797

Register Low Cost (ok dirt cheap!) Domain Names in the MacTech Domain Store. As low as $1.99!
Save on brand compatible and name brank ink jet and laser supplies.
Save on long distance * Upgrade your Computer
Movies with No Late Fees!

See local info about Westlake Village
SJ * BRJ * BJ * OJ * NITS
Staff Site Links



All contents are Copyright 1984-2008 by Xplain Corporation. All rights reserved.

MacTech is a registered trademark of Xplain Corporation. Xplain, Video Depot, Movie Depot, Palm OS Depot, Explain It, MacDev, MacDev-1, THINK Reference, NetProfessional, NetProLive, JavaTech, WebTech, BeTech, LinuxTech, Apple Expo, MacTech Central and the MacTutorMan are trademarks or service marks of Xplain Corporation. Sprocket is a registered trademark of eSprocket Corporation. Other trademarks and copyrights appearing in this printing or software remain the property of their respective holders.