[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

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

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

flobuc
Beiträge gesamt: 246

26. Jan 2010, 10:42
Beitrag # 1 von 12
Bewertung:
(6213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich möchte euch hier mein Skript bzw. Skripte zum Importieren von Seitenquerverweisen (z.B. "siehe Seite 8") von Word nach InDesign CS4 zur Verfügung stellen.
InDesign CS4 importiert zwar Seitenquerverweise automatisch von Word. InDesign platziert die Marken aber bei mir immer falsch. Um diesen Fehler zu umgehen hab ich mir eine Skriptlösung geschrieben.

Mein Vorgang besteht aus einem VBA-Skript, das die Seitenquerverweise in Word durch Marken ersetzt.
Und einem InDesign-Skript, das die Marken wieder in echte Seiten-Querverweise zurückwandelt.
Das Ganze läuft unter Word 2007 und InDesign 6.0.4 und funktioniert nur für Querverweise vom Typ (Pagereference) also Seitenverweise.

Viel Spass damit.

Gruss

Flo

VisualBasic-Skript:
Code
Sub replaceCrossReferences() 

Dim referenceTargets As New Collection

For Each aField In ActiveDocument.Fields
If aField.Type = wdFieldPageRef Then

aField.Select

refText = aField.Code.text
refText = Mid(refText, InStr(refText, "_"), Len(refText))
refText = Mid(refText, 1, InStr(refText, " ") - 1)

Selection.InsertBefore ("<<" & refText & ">>")

targetDone = False
For Each Target In referenceTargets
If Target = refText Then
targetDone = True
End If
Next

If Not targetDone Then
Selection.GoTo What:=wdGoToBookmark, Name:=refText
Selection.InsertBefore ("<<Target " & refText & ">>")
referenceTargets.Add (refText)

End If

aField.Delete

End If
Next aField
End Sub


InDesign-Skript:
Code
//****************************************************************// 
/* Skript zum Auflösen von Word-Seitenquerverweis-Marken (<<_DefXXXXXXXXX>>)
* Die Marken werden per VBA-Skript im WORD erzeugt.
* @author Florian Buchner
* @date 12.12.2009
* @lastChange 20.12.2009
* @version 1.4
* @copyright Fotosatz Buck
//****************************************************************//

var CROSSREFERENCEFORMAT_NAME = "Nur Seitenzahl";

var currentDocument = app.activeDocument;

//****************************************************************//
// Querverweise-Format der Querverweise erzeugen
// Es wird nur ein Format auf Seitenzahlen angelegt, das nur die Seitenzahl anzeigt
//****************************************************************//
var crossRefFormat = currentDocument.crossReferenceFormats.itemByName(CROSSREFERENCEFORMAT_NAME);
if(crossRefFormat == null){
crossRefFormat = currentDocument.crossReferenceFormats.add(CROSSREFERENCEFORMAT_NAME);
crossRefFormat.buildingBlocks.add(BuildingBlockTypes.PAGE_NUMBER_BUILDING_BLOCK);
}

//****************************************************************//
// Ziele der Querverweise erzeugen
//****************************************************************//
//Clear the find/change preferences.
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = "<<Target(.)+?>>";
//Set the find options.
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;

var allCrossReferenceTargets = currentDocument.findGrep();

for(i=allCrossReferenceTargets.length-1;i>=0;i--){
var currentCrossReferenceTarget = allCrossReferenceTargets[i];

var targetName = currentCrossReferenceTarget.contents;
targetName = targetName.substring(targetName.indexOf(" ")+1,targetName.indexOf(">"));

currentDocument.hyperlinkTextDestinations.add(currentCrossReferenceTarget, {name: targetName});

}

//********************************************************************//
// Alle Target-Artefakte löschen <<Target _DefXXXXXXXXX>>
//********************************************************************//
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "<<Target(.)+?>>";
app.changeGrepPreferences.changeTo = "";
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
currentDocument.changeGrep();

//****************************************************************//
// Querverweise erzeugen
//****************************************************************//
//Clear the find/change preferences.
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;

app.findGrepPreferences.findWhat = "<<(.)+?>>";
//Set the find options.
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;

var allCrossReferences = currentDocument.findGrep();

for(i=allCrossReferences.length-1;i>=0;i--){
var currentCrossReference = allCrossReferences[i];

var targetName = currentCrossReference.contents;
targetName = targetName.substring(targetName.lastIndexOf("<")+1,targetName.indexOf(">"));

var crossRefSource = currentDocument.crossReferenceSources.add(currentCrossReference, crossRefFormat);
var hyperlink = currentDocument.hyperlinks.add(crossRefSource, currentDocument.hyperlinkTextDestinations.itemByName(targetName));

}


//****************************************************************//
// Alle Querverweis-Artefakte löschen <<_DefXXXXXXXXX>>
//****************************************************************//
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "<<(.)+?>>";
app.changeGrepPreferences.changeTo = "";
app.findChangeGrepOptions.includeFootnotes = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
currentDocument.changeGrep();

X

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

Stibu2
Beiträge gesamt: 1

8. Feb 2010, 15:03
Beitrag # 2 von 12
Beitrag ID: #432994
Bewertung:
(6126 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!
Hört sich ja toll an, aber leider hab ich überhaupt keine Ahnung, wie man so ein Skript anwendet... Kannst Du da vielleicht ganz kruz erläutern, wie das geht?
Vielen Dank schon mal!
Grüße
Stibu


als Antwort auf: [#431528]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

Christoph Steffens
Beiträge gesamt: 4896

8. Feb 2010, 16:01
Beitrag # 3 von 12
Beitrag ID: #433010
Bewertung:
(6110 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#432994]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

benner
Beiträge gesamt:

7. Sep 2010, 14:29
Beitrag # 4 von 12
Beitrag ID: #450770
Bewertung:
(5815 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo! Leider läuft bei mir das VBA-Skript nicht durch. Ich bekomme immer einen Laufzeitfehler '5' Ungültiger Prozeduraufruf oder ungültiges Argument bei der Zeile
refText = Mid(refText, InStr(refText, "_"), Len(refText))
angezeigt...
Was mach ich falsch? Muss noch irgendwas eingestellt werden? Die Verweise sind alle Pagereferences und ich nutze Word2007.
Grüße
Benner


als Antwort auf: [#433010]
(Dieser Beitrag wurde von benner am 7. Sep 2010, 14:32 geändert)

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

flobuc
Beiträge gesamt: 246

7. Sep 2010, 15:08
Beitrag # 5 von 12
Beitrag ID: #450773
Bewertung:
(5793 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Benner,

kann da jetzt aus der Ferne gar nichts sagen.
Wenn es kein Geheimnis ist, kannst du mir gerne mal die Word-Datei als PM zukommen lassen.

Gruss

Flo


als Antwort auf: [#450770]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

chaot
Beiträge gesamt: 47

29. Jun 2011, 10:03
Beitrag # 6 von 12
Beitrag ID: #474694
Bewertung:
(5428 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
da ich mittlerweile sehr viel mit Seitenquerverweise zu tun habe, die alle in Word vorgegeben sind, bin ich auf die Suche nach einer Lösung gegangen und bin hier gelandet. Ich habe Indesign 6.0.6-Version. Das Word-Skript direkt getestet und voller Freude festgestellt, das Skript klappt 1a. Juchu freu freu ... dann die Hoffnung, es klappt auch mit der 6.0.6-Version ... shitte Fehlermeldung.
Fehhlernummer:8
Fehlerzeichenfolge Syntaxfehler
Datei C:\ .....
Zeile 9
Quelle
//**************//
Problematischer Text:/

ups und der Frust war da. Wäre es möglich, dass Du mir da helfen kannst, stellenweise sitz ich bis zu 5 Stunden an dem Text, um die Mengen an Querverweisen einzufügen. Es wäre supertoll ...
Danke und dicken Gruß
chaot


als Antwort auf: [#450773]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

flobuc
Beiträge gesamt: 246

29. Jun 2011, 10:23
Beitrag # 7 von 12
Beitrag ID: #474697
Bewertung:
(5418 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo chaot,

das ist nur ein kleiner Fehler.

Wenn du dir das Skript im ESTK anschaust (dazu einfach im InDesign in der Skript-Palette mit rechtem Mausklick auf das Skript klicken und "Skript bearbeiten" auswählen), dann siehst du, dass in Zeile 9 der letzte Schrägstrich nicht grün ist sondern schwarz. Den Schrägstrich einfach löschen. Dann Skript speichern und nochmal probieren.

Hoffe es klappt.

Gruss

Flo


als Antwort auf: [#474694]
(Dieser Beitrag wurde von flobuc am 29. Jun 2011, 10:39 geändert)

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

chaot
Beiträge gesamt: 47

29. Jun 2011, 10:58
Beitrag # 8 von 12
Beitrag ID: #474704
Bewertung:
(5399 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Flo
erst mal super lieben Dank für die turboschnelle Antwort, das Löschen und Ersetze des schwarzen / in einen grünen klppte nicht, ich habe da etwas getestet und einfach am Anfang und am Ende je 1x den / gelöscht schon war dieser Fehler weg, dafür einen neuen *grummel*
currentDocument.hyperlinkTextDestinations.add(currentCrossReferenceTarget, {name: targetName});
Ich hab NULL Ahnung vom Skripten vermute mal blauäugig irgendwas fehlt. Muss da ev. ein Format zuvor vorhanden sein? Ohje ....
Lieben Dank
chaot


als Antwort auf: [#474697]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

flobuc
Beiträge gesamt: 246

29. Jun 2011, 12:52
Beitrag # 9 von 12
Beitrag ID: #474728
Bewertung:
(5371 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo chaot,

hast du eine genauere Fehlermeldung?

Flo


als Antwort auf: [#474704]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

chaot
Beiträge gesamt: 47

29. Jun 2011, 13:42
Beitrag # 10 von 12
Beitrag ID: #474743
Bewertung:
(5359 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Flo
das ist Zeile 48

currentDocument.hyperlinkTextDestinations.add(currentCrossReferenceTarget, {name: targetName});

Auf den Verweisen ist kein Zeichenformat die Referenzen sind auch alle in der Form <<Target _Ref292865987>.
LG
chaot


als Antwort auf: [#474728]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

flobuc
Beiträge gesamt: 246

30. Jun 2011, 08:33
Beitrag # 11 von 12
Beitrag ID: #474821
Bewertung:
(5291 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo chaot,

aus der Ferne kann ich jetzt nichts genaues dazu sagen.
Aber die Querverweise in Word sind schon ein bisschen tricky.
Da kann es allerhand Probleme geben. Wenn du willst kannst du mir dein InDesign-Dokument mal zuschicken. Dann schau ich kurz drüber.

Gruss

Flo


als Antwort auf: [#474743]

Skript zum Importieren von Seitenquerverweisen von Word nach InDesign CS4

chaot
Beiträge gesamt: 47

30. Jun 2011, 09:24
Beitrag # 12 von 12
Beitrag ID: #474827
Bewertung:
(5276 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Flo,
tja der Mensch ist kein Computer, ich habe da einen Denkfehler begannen au man ... zur Info ich arbeite zwar mit Word 2007 aber im Kompatibilitätsmodus von 2003 und speicher auch als *.doc ab. Gestern nacht so beim Einschlafen ist mir die Idee gekommen - ist bei mir normal sowas - deswegen auch Chaot :) - den ganzen Test mit Deinem mal als docx-Datei zu fahren und schwupps rappel rappel rappel welch einen RIESENfreude es funktioniert alle Verweise drin .... ich bin platt wie eine Flunder.
Vielen lieben Dank für Deine Hilfe und ganz besonders für die Bereitstellung des Skripts, es erspart stundenlange händische Arbeit. Du kannst Dir gar nicht vorstellen wie sehr ich mich freue.
Ganz liebe Grüße und meagsupervielenDank ist noch zu wenig ausgedrückt
Chaot


als Antwort auf: [#474821]
X