• 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 100



With .TextRange

' add some text

.Text = "We can add text to shapes"

End With

End With

End With

 

' or somewhat more compactly

With ActiveWindow.Selection.ShapeRange

.TextFrame.TextRange.Text = "This works too"

End With

End Sub

Most of the example macros here start with that ActiveWindow.Selection.ShapeRange, which we can't replicate in AppleScript. I'm leaving them unaltered in the VBA just to emphasize how often you may need to need to deal with this. Remember that in Office 2008 there should hopefully be a selection property and you would need to replace the line that calls the GetSelectedShape() handler, which won't work then. For now, remember to paste in the GetSelectedShape() handler at the bottom of every script that needs it. I will not include the handler here every time, but they almost all call it, so you'll need it.

tell application "Microsoft PowerPoint"

     --get the selected shape via the handler

     set selectedShape to my GetSelectedShape() -- paste it in below!

    

     tell selectedShape

          tell its text frame -- needs 'its'!

              tell its text range -- needs 'its'

                   --unless noted, refers to all the text in the text frame

                   set content to "We can add text to shapes."

              end tell

          end tell

     end tell

    

     --or, more compactly

     set content of text range of text frame of selectedShape to ¬

          "This works too!"

    

end tell

All very straightforward. Leave out the final line first time through if you want to see the first text change, as it is replaced by the second one so quickly you won't spot it. Note that using nested tell blocks (corresponding to VBA's With blocks) are useful if there are going to be more commands directed at any of the intermediate targets. Otherwise, for a single command like this one, it's simpler to use the more compact 'of' version. (You can use any combination of tell and of you like: it needn't be all or nothing.) This is a very useful example because it contains two properties – text frame and text range – that are the same term (keywords) both for the property of their containing object and for the class. As explained earlier, and in more detail in the Word and Entourage chapters, that is a bit of a "no-no" for application developers. It means you absolutely have to use its in tell blocks and in whose (where its) clauses. You will notice that with two of them here, if you omit the first its for text frame, the script won't even compile for text range.

Check for Text Frames and Text

Some shapes cannot have text frames (namely lines, arrows, connectors) and in other cases a shape that has a text frame may still cause the macro to throw errors when you try to access the text frame or its text, so some conditional coding and error trapping is always a good idea:

Sub TextCaveats()

With ActiveWindow.Selection.ShapeRange



< 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