Re: writing text to MS Word
Re: writing text to MS Word
- Subject: Re: writing text to MS Word
- From: Hudson Barton <email@hidden>
- Date: Wed, 1 Jun 2005 14:32:13 -0400
I have no doubt you are correct in saying that the text result of a
shell script is often a unicode string rather than an ascii string.
Most text editors don't care what it is, but Word X does care. I am
satisfied that my problem is solved as soon as I have a way to coerce
unicode strings to ascii strings efficiently. Unfortunately, "set
blah to result as string" does not coerce from unicode to ascii. The
"as string" coercion works for lists, but it's not for unicode.
I do have one way of coercing that's not too bad...if you have a
sense of humor. I write the result of the shell script to a POSIX
file and then read back the text. By "washing" it through the POSIX
file, I get an ascii string.
H.
At 10:27 AM -0700 6/1/05, Paul Berkowitz wrote:
On 6/1/05 10:14 AM, "Andrew Oliver" <email@hidden> wrote:
On 6/1/05 10:04 AM, "Hudson Barton" <email@hidden> wrote:
I have some output from a shell script that is supposed to be regular
text and if I move it into most text editors, it looks, feels and
acts just like regular text. But apparently it's not. I need to
move the text into a window of Microsoft Word (version 10), and it's
producing errors like "Can't set every text of window 1 to ..."
What's going on here?
If I convert each character first to an ascii number and then back to
an ascii character, then it works fine, but that's not practical.
Is there an easier way to coerce this string to a regular ascii
string?
My script says:
set str to result ---result of shell script
tell application "Microsoft Word" to set text of window 1 to str
Despite what the dictionary says, 'do shell script' will return unicode
text, not 'regular text' (whatever that may be).
My guess is that you may need to coerce the shell script result to type
'string' before Word will take it, either:
set str to (do shell script "blah" as string)
tell application "Microsoft Word" to set text of window 1 to str
or:
set str to do shell script "blah"
tell application "Microsoft Word" to set text of window 1 to (str as
string)
I would not count on being able to script Word X to do anything like this
reliably. Although its dictionary may claim to do things like this it
usually won't work. Or it will crash. You'd have to do it via 'do Visual
Basic', which is much more complicated. Word 2004 is another matter - it
will be scriptable, but not like that. Its object hierarchy is more
complicated (mirroring the 'do Visual Basic' method, but with the dictionary
and an AppleScript Reference available).
Here's a reference to getting 'do Visual Basic' working for Word X:
<http://www.word.mvps.org/MacWordNew/WordAppleScript.htm>
In Safari, you have to refresh the page a few times to get it to show up.
You have to use the Visual Basic Editor Help (in Word) to learn the VBA code
needed.
And in Word X, you do have to use string as Andrew says (although I'd expect
the Unicode to coerce to string OK, even implicitly). For Word 2004, Unicode
is in fact what's expected (although string works OK too).
--
Paul Berkowitz
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Applescript-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Applescript-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden