[GastForen Programme Print/Bildbearbeitung Adobe InDesign Mehrere Buchstaben (Character) per Script markieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Mehrere Buchstaben (Character) per Script markieren

flingeflung
Beiträge gesamt: 40

16. Mär 2007, 11:14
Beitrag # 1 von 12
Bewertung:
(4363 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

ich möchte per Script alle Absätze meiner Story durchlaufen und dabei nach dem Vorkommen bestimmter Textmerkmale suchen. Wenn das Script fündig wird, soll der Textabschnitt markiert werden, so dass der Benutzer dann per Dialogfenster entscheiden kann, ob er ... oder ob nicht.
Es sollen also in einem Absatz mypara der Länge l>=m alle Buchstaben von Position n bis m markiert (select) werden. Wie muss der Code lauten (VB oder JS)?

Thanx :-)
X

Mehrere Buchstaben (Character) per Script markieren

zaphodbeeblebroxx
Beiträge gesamt: 408

16. Mär 2007, 11:20
Beitrag # 2 von 12
Beitrag ID: #282108
Bewertung:
(4361 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

probiers mal mit [JS]:

Code
mypara.characters.itemByRange(n,m).select(); 


zaphodbeeblebroxx


Matthias


als Antwort auf: [#282102]

Mehrere Buchstaben (Character) per Script markieren

flingeflung
Beiträge gesamt: 40

16. Mär 2007, 12:38
Beitrag # 3 von 12
Beitrag ID: #282140
Bewertung:
(4350 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
*snirg*

Es funzt nicht. Wenn ich den Code nach VB transportiere, bekomme ich immer nur einen einzigen Buchstaben markiert. itemByRange habe ich schon versucht, aber ich weiß einfach die genaue Syntax nicht.
Mit
Code
set a=thispara.characters 
myInDesign.select a.itemByRange(3,5).item(1)

bekomme ich beispielsweise das erste Zeichen innerhalb der Range 3-5 markiert, also das 3. Zeichen im Absatz. VB verlangt nach itemByRange noch weitere Parameter, und die Bibliothek sagt, dass Folgende zur Verfügung stehen:
AnyItem
Count
FirstItem
Item
ItemByRange (haha)
LastItem
MiddleItem
NextItem
PreviousItem

Ich kann also mit itemByRange zwar einen Bereich im Absatz festlegen, aber ihn noch nicht mal anzeigen lassen, da z. B. die Eigenschaft 'contents' gar nicht vorhanden ist.

Wer weiß noch Rat?


als Antwort auf: [#282108]

Mehrere Buchstaben (Character) per Script markieren

zaphodbeeblebroxx
Beiträge gesamt: 408

16. Mär 2007, 14:45
Beitrag # 4 von 12
Beitrag ID: #282181
Bewertung:
(4324 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

hast Du Dir mal in der VB-Scripting-Reference die "Characters Methods" angesehen?

Ich kenne mich zwar in VB nicht so gut aus (verwende nur JS),
aber laut der Referenze müsste es so lauten:
Code
set a=thispara.characters.ItemByRange(n,m).select(); 


Also Item groß geschrieben! (Das item(1) das Du angehängt hast mach keinen Sinn!)

zaphodbeeblebroxx


Matthias


als Antwort auf: [#282140]

Mehrere Buchstaben (Character) per Script markieren

zaphodbeeblebroxx
Beiträge gesamt: 408

19. Mär 2007, 09:34
Beitrag # 5 von 12
Beitrag ID: #282474
Bewertung:
(4277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

nur noch kurz zur Info:

mit Deiner Code-Zeile:

Code
myInDesign.select a.itemByRange(3,5).item(1) 


wählst Du zwar zunächst die Buchstaben 3 bis 5 des ausgewählten Absatzes aus, aber durch das anfügen von item(1) wählst Du von den ausgewählten Zeichen 3 bis 5 den ersten aus. Wenn Du das item(1) weglässt, sollte es funktionieren.

zaphodbeeblebroxx


Matthias


als Antwort auf: [#282181]

Mehrere Buchstaben (Character) per Script markieren

flingeflung
Beiträge gesamt: 40

19. Mär 2007, 11:50
Beitrag # 6 von 12
Beitrag ID: #282522
Bewertung:
(4262 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

das mit dem item(1) war nur als Beispiel gedacht, um zu zeigen, dass nach itemByRange noch weitere Parameter erwartet werden. Heißt: es funktioniert auch nicht nach Weglassen. Ich habe schon alle möglichen Notationen probiert, aber die richtige war anscheinend noch nicht dabei *seufz*.

Trotzdem danke!
Ralf


als Antwort auf: [#282474]

Mehrere Buchstaben (Character) per Script markieren

zaphodbeeblebroxx
Beiträge gesamt: 408

19. Mär 2007, 12:29
Beitrag # 7 von 12
Beitrag ID: #282533
Bewertung:
(4251 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

dann muss da wohl ein Fehler in der VB-Scripting-Reference sein, denn da heißt es:

ItemByRange: Returns the Characters within the specified range.

ParameterTypeDescription:

From Variant: The Character or the index or name of the Character at the beginning of the range as Object, Long or String.

To Variant: The Character or the index or name of the Character at the end of the range as Object, Long or String.



Das heißt also, dass nur der Paramater "von" und "bis" übergeben werden muss, von weiteren Parametern ist hier nicht die Rede. Hast Du bei der Notation auch "ItemByRange" großgeschrieben? Ich weiß nicht, wie das bei VB ist, aber JS reagiert auf falsche Groß-/Kleinschreibung mit einer Fehlermeldung!

Was erhälst Du denn für eine Fehlermeldung, wenn Du den folgenden Code verwendest?



Code
set a=thispara.characters.ItemByRange(n, m).select(); 


zaphodbeeblebroxx


Matthias


als Antwort auf: [#282522]

Mehrere Buchstaben (Character) per Script markieren

flingeflung
Beiträge gesamt: 40

19. Mär 2007, 13:39
Beitrag # 8 von 12
Beitrag ID: #282560
Bewertung:
(4240 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
dein Codebeispiel ist eine Methode, und Set ist die Zuweisung einer Objektvariablen, es kann so also gar nicht funktionieren. Die Groß- und Kleinschreibung ist auch hinfällig, da ich VB-Skripte in der Excel-VB-Entwicklungsumgebung teste. Die erlaubt zum einen sehr gutes Debugging und wandelt zum anderen die Schreibweise automatisch in die entsprechende der Objektbibliothek um.

Der Fehler für
Code
myInDesign.ActiveWindow.Select thispara.characters.itemByRange(1,2) 

lautet
"Laufzeitfehler '30477':
Ungültiger Wert für Parameter "SelectableItems" von Ereignis "Select". Objekt, Array of Objects, idNothingEnum enumerator or idSslectAll enumerator erwartet, aber (Character,Character) erhalten"

Anscheinend erwartet der Interpreter also ein Object anstelle von (1,2), welches meine "Range" sein sollte, ich möchte also in dem Beispiel Buchstabe 1 und 2 markieren. Die Frage ist, wie kann ich diese Range in ein Objekt umwandeln, so dass der Interpreter es frisst?

achselzuckende Grüße
Ralf


als Antwort auf: [#282533]

Mehrere Buchstaben (Character) per Script markieren

Martin Fischer
  
Beiträge gesamt: 12623

19. Mär 2007, 14:17
Beitrag # 9 von 12
Beitrag ID: #282570
Bewertung:
(4232 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mal ein Schuß ins Blaue ... vielleicht könnte der Code auch in etwa so lauten:
Code
 myInDesign.ActiveWindow.Select thispara.Texts.itemByRange(Characters.item(1), Characters.item(2)) 


Ich vermute, VBA braucht das Objekt (die Zeichen von ... bis) in der Klammer von itemByRange().

Viele Grüße
Martin




als Antwort auf: [#282560]
(Dieser Beitrag wurde von Martin Fischer am 19. Mär 2007, 14:18 geändert)

Mehrere Buchstaben (Character) per Script markieren

Martin Fischer
  
Beiträge gesamt: 12623

19. Mär 2007, 15:08
Beitrag # 10 von 12
Beitrag ID: #282579
Bewertung:
(4218 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In dem Code oben ist noch ein Fehler.
Characters(2) sind noch kein Objekt (Characters von was).

Es muß statt dessen thispara.Characters(2) heißen.

Folgendes Skript konnte ich gerade erfolgreich testen:
Code
Set myIndesign = CreateObject("InDesign.Application.CS2") 
Set thispara = myIndesign.Documents.item(1).Stories.item(1).Paragraphs.item(2)
myInDesign.ActiveWindow.Select thispara.Texts.itemByRange(thispara.Characters(3), thispara.Characters(5))


Viele Grüße
Martin




als Antwort auf: [#282570]

Mehrere Buchstaben (Character) per Script markieren

flingeflung
Beiträge gesamt: 40

19. Mär 2007, 15:36
Beitrag # 11 von 12
Beitrag ID: #282587
Bewertung:
(4209 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin, du bist wie immer ein Genie ;-)

Ich finde es zwar etwas unlogisch, dass man als Range zwei Objekte statt zweier Indizes angeben muss, aber ... Hauptsache, es funzt jetzt endlich, und das tut es. Vielen Dank!

Viele Grüße
Ralf


als Antwort auf: [#282579]

Mehrere Buchstaben (Character) per Script markieren

Martin Fischer
  
Beiträge gesamt: 12623

19. Mär 2007, 16:01
Beitrag # 12 von 12
Beitrag ID: #282596
Bewertung:
(4199 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Ich finde es zwar etwas unlogisch, dass man als Range zwei Objekte
> statt zweier Indizes angeben muss, aber

Ja, das ist für einen alten JavaScripter eine harte Nuß.
Da heißt es, kräftig zubeißen. ;-)

Schön, daß es funktioniert.

Viele Grüße
Martin




als Antwort auf: [#282587]
X

Aktuell

InDesign / Illustrator
ScreenShot 274 Warum Templates in InDesign benutzen_ - Satzkiste in Stuttgart - Satz und technische Umsetzung - Google Chrome (300x300 HilfDirSelbst)

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
29.09.2022

IDUGS#85 Press2id

Zoom Meeting
Donnerstag, 29. Sept. 2022, 19.00 - 21.00 Uhr

Vortrag

Kennst du WordPress? Vielleicht. Verwendest du WordPress? Ja, klar! WordPress ist das am weitesten verbreitete System für die Erstellung von Webseiten. Um Webseitenbau soll es auf dieser IDUG aber nicht gehen. Gregor zeigt press2id (github.com/grefel/press2id). Seine Open-Source-Lösung für die Verbindung von Web und InDesign. Richtig gelesen: InDesign liest mithilfe von press2id die Inhalte der WordPress-Webseiten und generiert daraus Zeitschriften, Kataloge, Programmhefte oder Bierdeckel (das zeigen wir natürlich auch!). So wird die „Content First“ Theorie zu einer konkret anwendbaren Praxis, ohne gleich die ganz großen Räder zu drehen. Versprochen: Jeder kann nach der IDUG innerhalb kürzester Zeit Daten von WordPress nach InDesign importieren. Aber Achtung: Prinzipiell kann press2id aus jeder Website, oder besser Contentmanagementsystem (CMS) Daten auslesen und nach InDesign importieren! Spannend, oder? Danach geht es in die Praxis: Stefan hat die Webseite des Parktheater Iserlohn (parktheater-iserlohn.de) gestaltet. Die gedruckten Spielpläne (parktheater-iserlohn.de/interaktive-spielplaene) werden mit press2id realisiert. Wir schauen in den Maschinenraum und zeigen, wie die Lösung des Projekts realisiert wurde.

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs85.eventbrite.de/

Von Wordpress nach InDesign
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022