• MacTech Network:
  • Tech Support
  • |
  • MacForge.net
  • |
  • Apple News
  • |
  • Register Domains
  • |
  • SSL Certificates
  • |
  • iPod Deals
  • |
  • Mac Deals
  • |
  • Mac Book Shelf

MAC TECH

  • Home
  • Magazine
    • About MacTech in Print
    • Issue Table of Contents
    • Subscribe
    • Risk Free Sample
    • Back Issues
    • MacTech DVD
  • Archives
    • MacTech Print Archives
    • MacMod
    • MacTutor
    • FrameWorks
    • develop
  • Forums
  • News
    • MacTech News
    • MacTech Blog
    • MacTech Reviews and KoolTools
    • Whitepapers, Screencasts, Videos and Books
    • News Scanner
    • Rumors Scanner
    • Documentation Scanner
    • Submit News or PR
    • MacTech News List
  • Store
  • Apple Expo
    • by Category
    • by Company
    • by Product
  • Job Board
  • Editorial
    • Submit News or PR
    • Writer's Kit
    • Editorial Staff
    • Editorial Calendar
  • Advertising
    • Benefits of MacTech
    • Mechanicals and Submission
    • Dates and Deadlines
    • Submit Apple Expo Entry
  • User
    • Register for Ongoing Raffles
    • Register new user
    • Edit User Settings
    • Logout
  • Contact
    • Customer Service
    • Webmaster Feedback
    • Submit News or PR
    • Suggest an article
  • Connect Tools
    • MacTech Live Podcast
    • RSS Feeds
    • Twitter

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.



< Previous Page Next Page>
 
MacTech Only Search:
Community Search:

 
 
 

 
 
 
 
 
  • SPREAD THE WORD:
  • Slashdot
  • Digg
  • Del.icio.us
  • Reddit
  • Newsvine
  • Generate a short URL for this page:



MacTech Magazine. www.mactech.com
Toll Free 877-MACTECH, Outside US/Canada: 805-494-9797
MacTech is a registered trademark of Xplain Corporation. Xplain, "The journal of Apple technology", Apple Expo, Explain It, MacDev, MacDev-1, THINK Reference, NetProfessional, Apple Expo, MacTech Central, MacTech Domains, MacNews, MacForge, 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.
All contents are Copyright 1984-2010 by Xplain Corporation. All rights reserved. Theme designed by Icreon.
 
Nov. 20: Take Control of Syncing Data in Sow Leopard' released
Nov. 19: Cocktail 4.5 (Leopard Edition) released
Nov. 19: macProVideo offers new Cubase tutorials
Nov. 18: S Stardom anounces Safe Capsule, a companion piece for Apple's
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live