Re: Making text plain or bold in Word
Re: Making text plain or bold in Word
- Subject: Re: Making text plain or bold in Word
- From: Paul Berkowitz <email@hidden>
- Date: Fri, 11 Apr 2003 12:32:38 -0700
You should not be including the Sub/End Sub when using in 'do Visual Basic'.
And just as in regular AppleScript, you should not use Selection when it's
not necessary - it's clunky and slower. 'Words' in VB can consist just of
tabs or other white space, and should be excluded. It's possible that Normal
style will not be plain text although it is, virtually always true enough,
with the user's default font (usually Times) which is plain enough, I'm
sure. Then you can just set the style to Normal and - most important - Reset
the Font to remove manually applied formatting.
I haven't been able to discover any generic "white space" constant in VBA,
so I check to make sure that a 'word' has at least one character with an
ASCII number higher than 32 (i.. a visible character). When I first tested
this without that check it found all the tabs in my first line as "words" so
the real words never got bolded.
This script is super fast, with no clunky selecting going on:
tell application "Microsoft Word"
do Visual Basic "
Dim myStory As Variant
Dim myWord As Variant, char As Variant
Dim i As Integer, c As Integer, w As Integer
For Each myStory In ActiveDocument.StoryRanges
myStory.Style = wdStyleNormal
myStory.Font.Reset
Next myStory
i = 0
w = 0
c = ActiveDocument.Words.Count
For Each myWord In ActiveDocument.Words
i = i + 1
For Each char In myWord.Characters
If Asc(char) > 32 Then
myWord.Font.Bold = True
w = w + 1
Exit For
End If
Next char
If w = 2 Or i = c Then Exit For
Next myWord
"
end tell
--
Paul Berkowitz
>
From: "Oz.Springs" <email@hidden>
>
Date: Fri, 11 Apr 2003 19:36:38 +0100
>
To: email@hidden
>
Subject: Re: Making text plain or bold in Word
>
>
Yes, it is easy if you get Applescript to call up some Visual Basic. "Plain
>
text" in Word is usually called "Normal" style and you will have to set the
>
fonts and other characteristics yourself to get what you want, for example
>
using Courier, the plainest of plain fonts. Note, however, that Courier may
>
not be able to print in Bold.
>
>
Here is the VB part of your script:
>
>
Sub change_style()
>
'
>
' change_style Macro
>
' Selection.WholeStory
>
Selection.Style = ActiveDocument.Styles("Normal")
>
Selection.Style = ActiveDocument.Styles("Default Paragraph Font")
>
Selection.HomeKey Unit:=wdStory
>
Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend
>
Selection.Font.Bold = wdToggle
>
End Sub
>
>
HTH
>
>
>
>
Oz
>
>
> This is probably simple, but I am pulling my hair out over it.
>
>
>
> All I want to do is change all text in an opened Word document to "plain",
>
> then change the first two words of text to "bold".
>
>
>
> Easy, I hope?
>
_______________________________________________
>
applescript-users mailing list | email@hidden
>
Help/Unsubscribe/Archives:
>
http://www.lists.apple.com/mailman/listinfo/applescript-users
>
Do not post admin requests to the list. They will be ignored.
_______________________________________________
applescript-users mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/applescript-users
Do not post admin requests to the list. They will be ignored.