Article View: adobe.scripting.indesign
Article #15207Re: [VB] Can't get this script to run under CS
From: Olav_Kvern
Date: Fri, 12 Dec 2003 03:29
Date: Fri, 12 Dec 2003 03:29
66 lines
3829 bytes
3829 bytes
Perrin--
Here's a version that works for me in InDesign CS:
Rem PlaceGraphicAtTag.vbs
Rem An InDesign CS script.
Rem Places a graphic at locations in text defined by begin "<<" and end ">>" tags.
Rem Optional variable declarations. Omit these if you are creating a VBScript.
Rem Dim myInDesign As InDesign.Application
Rem Dim myPath As String
Rem Dim myDocument As InDesign.Document
Rem Dim myStory As InDesign.Story
Rem Dim myStartItems, myEndItems, myFoundTag As Object
Rem Dim myCounter, myFoundCounter, myStartIndex, myEndIndex As Long
Rem Enter the path to the folder containing the images you want to place.
Rem (Include the trailing backslash "\".)
myPath = "g:\myFilesToPlace\"
Set myInDesign = CreateObject("InDesign.application.CS")
Rem Clear the find/change preferences.
myInDesign.FindPreferences = idNothingEnum.idNothing
myInDesign.ChangePreferences = idNothingEnum.idNothing
Set myDocument = myInDesign.ActiveDocument
Rem Work through the document story-by-story.
For myCounter = 1 To myDocument.Stories.Count
Set myStory = myDocument.Stories.Item(myCounter)
Rem Create an object containing references to all instances of
Rem the "start tag" string ("<<" in this example).
Set myStartItems = myStory.Search("<<")
If myStartItems.Count > 0 Then
Rem Create an object containing references to all instances of
Rem the "end tag" string (">>" in this example).
Set myEndItems = myStory.Search(">>")
If myStartItems.Count = myEndItems.Count Then
Rem Iterate through the found items backwards to avoid invalidating
Rem text object references preceding them in the story.
For myFoundItemCounter = myStartItems.Count To 1 Step -1
Set myStartItem = myStartItems.Item(myFoundItemCounter)
myStartIndex = myStartItem.Characters.Item(1).Index
Rem Get the corresponding "end" tag.
Set myEndItem = myEndItems.Item(myFoundItemCounter)
myEndIndex = myEndItem.Characters.Item(-1).Index
Rem Get a reference to the first character in the "start" tag.
Set myStartCharacter = myStory.Characters.Item(myStartIndex)
Rem Get a reference to the first character in the "end" tag.
Set myEndCharacter = myStory.Characters.Item(myEndIndex)
Rem Use the ItemByRange method to get a reference to the entire tag.
Set myFoundTag = myStory.Texts.ItemByRange(myStartCharacter, myEndCharacter).Item(1)
Rem Replace the text of the tag with the specified graphic.
myFileName = Mid(myFoundTag.Contents, 3, Len(myFoundTag.Contents) - 4)
myFoundTag.Place myPath & myFileName
Next
Else
Rem We have a mismatched tag somewhere.
MsgBox "One of the stories contains a mismatched tag."
Exit For
End If
End If
Next
Sorry I wasn't able to get to your email messages earlier--haven't had a free moment until now.
Thanks,
Ole
Technical Details
Message-ID:
<2ccee2ce.0@webx.la2eafNXanI>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!webxReferences:
<2ccee2ce.-1@webx.la2eafNXanI>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: f939a,280e03cf7e7d0528 X-Google-Attributes: gidf939a,public X-Google-ArrivalTime: 2003-12-11 19:38:03 PST From: Olav_Kvern@adobeforums.com Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!webx Newsgroups: adobe.scripting.indesign Subject: Re: [VB] Can't get this script to run under CS Message-ID: <2ccee2ce.0@webx.la2eafNXanI> Date: Thu, 11 Dec 2003 19:29:18 -0800 References: <2ccee2ce.-1@webx.la2eafNXanI> Lines: 76 MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 8bit