Hallo Faxinger,
ja, das hatte ich missverstanden. Doch mit
convertToText() wird es nicht funktionieren.
Nachstehend das Script von 2014. So geändert, dass zuerst in jeder Reihe die Zellen vereint werden.
Code //ZeilenZuRahmen_601d.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 ("Eine Tabelle auswählen.", "Achtung"); exit(); } var curType = curSel[0].constructor.name; if (curType == "Table") { var curTable = curSel[0]; } else { alert ("Eine Tabelle auswählen.", "Stop"); exit(); } // in jeder Reihe die Zellen vereinen var allRows = curTable.rows; var nRows = allRows.length; for (var r=nRows-1; r>-1; r--) { allRows[r].cells[0].merge(allRows[r].cells.itemByRange(1,-1)); } // die Suchen/Ersetzen-Preferences löschen app.findTextPreferences = app.changeTextPreferences = null; // die Returns durch Tabs ersetzen app.findTextPreferences.findWhat = "\r"; app.changeTextPreferences.changeTo = "\t"; curTable.changeText(); // die Suchen/Ersetzen-Preferences löschen app.findTextPreferences = app.changeTextPreferences = null; // die Ebene "Zeilen" erzeugen var cellsLayer = curDoc.layers.item("Zeilen"); try { cellsLayer.locked = false; } catch (e){ cellsLayer = curDoc.layers.add({name:"Zeilen"}); } app.activeWindow.activeLayer = cellsLayer; // dis absolute Seitennummer var p = curTable.parent.parentPage.documentOffset; // alle Zellen var allCells = curTable.cells; // eine Schleife durch die Zellen for (var c=0; c<allCells.length; 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 // den 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) { } } // die Auswahl aufheben app.selection = 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(); Dabei wird als Trenner zwischen den Zellen-Inhalten automatisch ein Return eingefügt. Damit die Höhe der Reihe erhalten bleibt, werden die Returns durch Tabs ersetzt.
Versuche es bitte mal mit dieser Lösung.
Gruss, Hans