Tja, manchmal muss es eben Office sein: Der Kunde liefert Excel-Tabellen und die sollen ins InDesign – so weit, so unspektakulär.
Aus dem fertigen InDesign-Dokument (inkl. der Korrekturen) soll dann wiederum ein Excel-Dokument werden – klingt so weit auch machbar. Der Teufel steckt aber wie so oft im Detail:
• Wenn in Zellen (ob in Excel o. in InDesign spielt dabei keine Rolle) Tabulatoren vorhanden sind, man diese kopiert und ins jeweils andere Programm einfügt, passiert folgendes: Aus einer Zelle, in der etwa 1<TAB>2 steht, werden 2 Spalten (eine in der 1 steht, in der zweiten steht die 2). Unschön!
• Treten Umbrüche in Zellen auf, passiert das Gleiche: InDesign (bzw. Excel, je nachdem, wo man die Daten gerade einfügt) sieht sich veranlasst, den Umbruch als neue Zeile zu interpretieren. Igitt!
Der vorerst einzige Workaround: Den Inhalt jeder einzelnen Zelle markieren (also als Text) und diesen im anderen Programm wieder in eine einzelne Zelle einfügen. pfui!
Oder aber – man macht’s mit einer Mischung aus InDesign-Script und Excel-Makro:
Im Programm, aus dem ich die Daten ins andere Kopiere, werden Tabulatoren automatisch umgeschrieben in ###T###, Absatzenden in ###R###, und weiche Umbrüche in ###N###
Im der Applikation, in der die Daten schließlich landen, wird nach dem Einfügen automatisch wieder der Ursprungszustand wiederhergestellt.
Die jeweiligen Code-Listing dazu gibt’s hier.
Excel-Makros:
Sub BeforePaste2inDesign()
Dim Cell As Range
For Each Cell In Selection
Cell = Replace(Cell.Value, Chr(13), „###R###“) ‚RETURNS in ###R### ersetzen
Cell = Replace(Cell.Value, Chr(10), „###N###“) ‚SHIFT-Returns in ###N### ersetzen
Cell = Replace(Cell.Value, Chr(9), „###T###“) ‚TABS in ###T### ersetzen
Next
End Sub
Sub AfterPastingFromInDesign() ‚Nachdem in InDesign Tabs und Umbrüche in „### usw.“ umgeschrieben wurden
Dim Cell As Range
For Each Cell In Selection
Cell = Replace(Cell.Value, „###R###“, Chr(13)) ‚###R### in RETURNS ersetzen
Cell = Replace(Cell.Value, „###N###“, Chr(10)) ‚###N### in SHIFT-RETURNS ersetzen
Cell = Replace(Cell.Value, „###T###“, Chr(9)) ‚###T### in TAB ersetzen
Next
End Sub
InDesign-Skripte:
//SKRIPT1: Nachdem in Excel Tabs und Umbrüche in „### usw.“ umgeschrieben wurden
grepper („###N###“, „\n“); ///Ersetzung der Shift-Returns in ###N###
grepper („###R###“, „\r“); ///Ersetzung der Returns in ###R###
grepper („###T###“, „\t“); ///Ersetzung der Tabs in ###T###
/////////// GREPPER (SUCHEN & ERSETZEN MIT GREP)
function grepper(such, ersetz){
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;app.findGrepPreferences.findWhat = such; // Parameter such ins Grep-Suchfeld schreiben
app.changeGrepPreferences.changeTo = ersetz; // Parameter ersetz ins Grep-Ersetzen-Feld schreiben
app.activeDocument.changeGrep(); // mit obigen Parametern suchen/ersetzen
}
Danke für den Artikel. Hat geholfen.