![](/sites/all/themes/custom_front/images/you_are_here_red.gif)
![](/sites/default/files/beta-site.gif)
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 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>
![](/sites/all/themes/custom_front/img/search_text.gif)
- SPREAD THE WORD:
- Slashdot
- Digg
- Del.icio.us
- Newsvine