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



Not only would you need to use the explicit get, but you would need the repeat with i from format (nothing wrong with that) backwards from the last item to the first by –1 (also OK) and – if you insist on avoiding a variable – would have to (get every field of active document) twice, sending an AppleEvent each time. That is not a good idea, is unnecessary, wasteful and slow. Just use a variable (like allFields) as in the first version above or with a repeat with i syntax if you prefer:

tell application "Microsoft Word"

     set allFields to (every field of active document)

     repeat with i from 1 to (count allFields)

             set oField to item i of allFields

          unlink oField

     end repeat

end tell

That also works. End of digression.

Unlink Header Fields

Here's another unlink macro (by Word MVP Bill Coan) that unlinks every header and footer in the document:

Dim oField As Field

Dim oSection As Section

Dim oHeader As HeaderFooter

Dim oFooter As HeaderFooter

 

For Each oSection In ActiveDocument.Sections

 

    For Each oHeader In oSection.Headers

        If oHeader.Exists Then

            For Each oField In oHeader.Range.Fields

                oField.Unlink

            Next oField

        End If

    Next oHeader

 

    For Each oFooter In oSection.Footers

        If oFooter.Exists Then

             For Each oField In oFooter.Range.Fields

                 oField.Unlink

            Next oField

        End If

    Next oFooter

 

Next oSection

 

Now in VBA this looks awfully similar to the first example – it unlinks fields in the Ranges of headers and footers rather than in the main body of the document. However, it is completely different in AppleScript, due to the facts that 1) there are no collection objects and 2) this time we cannot create a list of headers and footers either since the header footer class is not an element of any other class, not even of section as you might expect, and the method of getting hold of these objects is much trickier.

It probably comes down to the fact that in AppleScript you cannot have read-only elements, although you can of course have read-only properties. By definition, an object can have 0 to infinite number of elements, and all you have to do to get a new one is to make new element at someObject and hey, presto, you've got another one. Word's Object Model (and Excel's and PowerPoint's too) has many Collection Objects that have no Add Method – you cannot make a new one, you just take what you're given.

The HeaderFooters Collection Object of each document Section is one of those: it has only (at a maximum) three Headers (representing the Primary, First Page and Even Pages Headers) and three Footers (same). You cannot add your own. Fair enough.

Therefore, in AppleScript, header footer objects cannot be elements of section since if they were you could make oodles of them. They have to be self-standing objects (the dictionary says they are inherited from base object) divorced from the Object Model, which is a shame. You get them by using the get header and get footer proprietary commands rather than, say, header footers of section 1 of active document.



< 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