Hallo Faxinger,
es war nicht so einfach, Deinen unverschämten Wunsch umzusetzen ...
Es ist zwar möglich, mehr als einen Textrahmen auszuwählen und zu kopieren. Aber das Einfügen in den Zielrahmen klappt nicht.
Neuer Versuch: Die Rahmen gruppieren, die Gruppe auswählen, kopieren und einfügen. Das funktioniert. Aber: Die Gruppe kann nicht mehr aufgelöst werden.
Deshalb kopiert das untenstehende Script die Rahmen einzeln, sobald sie erzeugt sind und fügt sie in den Zielrahmen ein.
Code //ZeilenZuRahmen_603d.js //© 14.09.2018 / Hans Haesler, Châtelard 52, CH-1018 Lausanne //DESCRIPTION:Tabellenzeilen in Textrahmen umwandeln // vorbeugenderweise das Anzeigen von Dialogen aktivieren app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; // prüfen, ob ein Dokument geöffnet ist if (app.documents.length == 0) { alert ("Es ist kein Dokument offen.", "Achtung"); exit(); } // das aktuelle Dokument var curDoc = app.documents[0]; // die Auswahl speichern und prüfen curSel = app.selection; if (curSel.length == 0) { alert ("Einen Textrahmen auswählen.", "Achtung"); exit(); } var curType = curSel[0].constructor.name; if (curType == "TextFrame") { var targetFrame = curSel[0]; } else { if (curSel[0].hasOwnProperty("baseline")) { targetFrame = curSel[0].parentTextFrames[0]; } else { alert ("Einen Textrahmen auswählen.", "Achtung"); exit(); } } // die im Rahmen enthalte(n) Tabelle(n) var allTables = targetFrame.tables; var nTables = allTables.length; // die Suchen/Ersetzen-Preferences löschen app.findTextPreferences = app.changeTextPreferences = null; // die Suchen/Ersetzen-Muster definieren app.findTextPreferences.findWhat = "\r"; app.changeTextPreferences.changeTo = "\t"; // eine Schleife durch die Tabellen for (var t=nTables-1; t>-1; t--) { // die aktuelle Tabelle und ihre Reihen var curTable = allTables[t]; var allRows = curTable.rows; var nRows = allRows.length; // die Abmessungen der Tabelle var tW = curTable.width; var tH = curTable.height; // in jeder Reihe die Zellen vereinen for (var r=nRows-1; r>-1; r--) { allRows[r].cells[0].merge(allRows[r].cells.itemByRange(1,-1)); } // die Returns durch Tabs ersetzen curTable.changeText(); // dis absolute Seitennummer var p = curTable.parent.parentPage.documentOffset; // alle Zellen var allCells = curTable.cells; var nCells = allCells.length; // eine Schleife durch die Zellen for (var c=0; c<nCells; c++) { var cH = allCells[c].height; // Höhe var cW = allCells[c].width; // Breite var yO = allCells[c].topInset; // Zellversatz oben var xO = allCells[c].leftInset; // Zellversatz links // der obere Zellenrand var y1 = (allCells[c].insertionPoints[0].baseline)-(yO*3)-0.25; // der linke Zellenrand var hP = (allCells[c].insertionPoints[0].horizontalOffset)-xO; var y2 = y1+cH; // der untere Rand var x2 = hP+cW; // der rechte Rand if (c == 0) { yy1 = y1; xx1 = hP; // den separaten Ziel-Textrahmen erzeugen var newFrame = curDoc.pages[p].textFrames.add({geometricBounds:[yy1, xx1, yy1+tH+1, xx1+tW+1], strokeColor:"None"}); } // den aktuellen Textrahmen erzeugen var curFrame = curDoc.pages[p].textFrames.add({geometricBounds:[y1, hP, y2, x2], strokeColor:"None"}); // der Abstand des Textes zum Rahmen curFrame.textFramePreferences.insetSpacing = [yO, xO, 0, 0]; // versuchen, den Inhalt der Zelle zu kopieren und einzusetzen try { app.select(allCells[c].texts[0]); app.copy(); app.select(curFrame.insertionPoints[0]); app.paste(); } catch (e) { } // den aktuellen Rahmen auswählen ... app.select(curFrame); // ... kopieren ... app.copy(); // ... den Einfügepunkt auswählen ... app.select(newFrame.insertionPoints[-1]); // ... und die Kopie einsetzen app.paste(); } // den Zeilenabstand zuweisen newFrame.parentStory.leading = (cH+"mm"); // den Rahmen nach links verschieben, damit er greifbar wird newFrame.move(undefined, [-10,0]); } // die Auswahl aufheben app.selection = null; // die Suchen/Ersetzen-Preferences löschen app.findTextPreferences = app.changeTextPreferences = null; // das Ende der Aktion verkünden var dlog = new Window("palette"); dlog.size = [320,100]; dlog.add("statictext", [80, 100, 320, 116], "Fertig."); dlog.show(); // eine kleine Pause $.sleep(999); // das Fenster schliessen dlog.close(); Der Textrahmen, welcher die einzelnen Rahmen enthält, wird am Schluss um 10 mm nach links verschoben, damit er besser greifbar ist.
Gruss, Hans