"Text In Spalten" in Makro aufzeichen?
Moderator: Moderatoren
Re: "Text In Spalten" in Makro aufzeichen?
Hallo
Es wird nur der konkrete Aufruf des Dialogs →Daten→Text in Spalten aufgezeichnet, aber gleichzeitig auskommentiert.
Selbst wenn du das per Hand editierst hilfts dir nicht wirklich, du bekommst nur wieder den Dialog.
Normalerweise "merkt" sich Calc doch auch die letzten getätigten Einstellungen von →Text in Spalten - damit "sparst" du doch mit einem richtigen Makro lediglich einen Mausklick - wozu also das Theater ?
Karolus
Es wird nur der konkrete Aufruf des Dialogs →Daten→Text in Spalten aufgezeichnet, aber gleichzeitig auskommentiert.
Selbst wenn du das per Hand editierst hilfts dir nicht wirklich, du bekommst nur wieder den Dialog.
Normalerweise "merkt" sich Calc doch auch die letzten getätigten Einstellungen von →Text in Spalten - damit "sparst" du doch mit einem richtigen Makro lediglich einen Mausklick - wozu also das Theater ?
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: "Text In Spalten" in Makro aufzeichen?
Hallo
Das ist die originale Aufzeichnung vom Aufruf →Daten→Text in Spalten:
die entscheidente vorletzte Zeile ist mit `rem` auskommentiert, wenn du das entfernst bekommst du über die Ausführung des Codes auch "nur" den Dialog präsentiert.
Wenn der Prozess umfangreicher ist dann vergiss den aufgezeichneten Code gleich ganz, und schildere besser die eigentliche Aufgabenstellung, am besten gleich mit ausreichend Beispielsdaten - Vorher ←→Nachher
Das ist die originale Aufzeichnung vom Aufruf →Daten→Text in Spalten:
Code: Alles auswählen
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:TextToColumns", "", 0, Array())
end sub
Wenn der Prozess umfangreicher ist dann vergiss den aufgezeichneten Code gleich ganz, und schildere besser die eigentliche Aufgabenstellung, am besten gleich mit ausreichend Beispielsdaten - Vorher ←→Nachher
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: "Text In Spalten" in Makro aufzeichen?
Danke. Stimmt, bei mir schaut das genau so aus, Nur mein (noch) ungeschultes Auge hats nicht richtig gesehen.
Beim abspielen passiert nur trotzdem nichts.
Ok, Beispiel
Das folgende steht so in einer Zelle:
"Diametric. - Timedog - Objects Of Mind - 21-diam."
Die Bindestriche (-) funktionieren beim umformatieren als Zellentrenner.
So daß dann am anschließend "Diametric." neue Zelle "Timedog" neue Zelle usw. da stehen sollte. Was halt leider bei der Markroausführung dann nicht der Fall ist.
Das Problem ist scheinbar, was Du ja auch schon bemerktest, daß nur der konkrete Aufruf des Dialogs aufgezeichnet wird und nicht die "Trennoptionen".
... das "auskommentieren " hab ich nun verstanden, thanxx
Beim abspielen passiert nur trotzdem nichts.
Ok, Beispiel
Das folgende steht so in einer Zelle:
"Diametric. - Timedog - Objects Of Mind - 21-diam."
Die Bindestriche (-) funktionieren beim umformatieren als Zellentrenner.
So daß dann am anschließend "Diametric." neue Zelle "Timedog" neue Zelle usw. da stehen sollte. Was halt leider bei der Markroausführung dann nicht der Fall ist.
Das Problem ist scheinbar, was Du ja auch schon bemerktest, daß nur der konkrete Aufruf des Dialogs aufgezeichnet wird und nicht die "Trennoptionen".
... das "auskommentieren " hab ich nun verstanden, thanxx

Re: "Text In Spalten" in Makro aufzeichen?
Hi,
habe mal was gebastelt, Zellen der Spalte die den Text-mit-Bindestrichen enthalten, markieren, und dann das Makro starten:
HTH R
habe mal was gebastelt, Zellen der Spalte die den Text-mit-Bindestrichen enthalten, markieren, und dann das Makro starten:
Code: Alles auswählen
Sub S_text_to_columns
oselection = Thiscomponent.currentselection
if oSelection.columns.Count <> 1 then
msgbox "Bitte nur Zellen in einer Spalte auswählen"
exit sub
endif
adata = oselection.dataarray
bMax = 0
for i = 0 to ubound(adata)
arow = adata(i)
anewRow = Split(arow(0),"-")
adata(i) = anewRow
if ubound(anewRow) > bMax then bMax = ubound(anewRow)
next i
for i = 0 to ubound(adata)
arow = adata(i)
nStart = ubound(arow)
if nStart < bMax then
redim preserve arow(bMax)
for j = nStart+1 to bMax
arow(j)= ""
next j
adata(i) = arow
endif
next i
osheet = oselection.spreadsheet
nStartRow = oselection.rangeaddress.Startrow
nEndRow = oselection.rangeaddress.Endrow
nColumn = oselection.rangeaddress.Endcolumn + 1
oRange = osheet.getcellrangebyposition(nColumn,nStartRow,nColumn+bMax,nEndRow)
oRange.setDataArray(adata)
End Sub
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: "Text In Spalten" in Makro aufzeichen?
Knüller! Funktioniert!
1000Dank
Damit ich auch noch was lerne, werd ich morgen mal probieren das inhaltlich zu verstehen, was Du da gemacht hast
Bis dahin, gute Nacht
T
1000Dank
Damit ich auch noch was lerne, werd ich morgen mal probieren das inhaltlich zu verstehen, was Du da gemacht hast

Bis dahin, gute Nacht
T
Re: "Text In Spalten" in Makro aufzeichen?
Hallo
Ok, @Tinkosn: Damit du wenigstens mal siehst wie das in einer richtigen Programmiersprache aussehen könnte:
Karolus
Ok, @Tinkosn: Damit du wenigstens mal siehst wie das in einer richtigen Programmiersprache aussehen könnte:
Code: Alles auswählen
def splitdata():
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.getCurrentSelection()
sheet = sel.Spreadsheet
address = sel.RangeAddress
first = address.StartRow
last = address.EndRow
firstCol = address.StartColumn
data = sel.DataArray
out = [row[0].split('-') for row in data ]
width = max(len(row) for row in out )
for row in out:
row.extend( [ '' ] * ( width - len( row ) ) )
out = tuple( map( tuple, out ) )
outrange = sheet.getCellRangeByPosition( firstCol,
first,
firstCol + width - 1,
last )
outrange.setDataArray( out )
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: "Text In Spalten" in Makro aufzeichen?
Hallo Karolus,in einer richtigen Programmiersprache
Vielleicht kann ich Dich ja überreden solche Code-Schnipsel zusätzlich in der FAQ abzulegen? Ich könnte da auch gerne eine zusätzliche Kategorie (z.B. "Python-Programmierung") dafür einrichten.
Grund: ich finde es gibt nach wie vor nicht allzuviel zur Python-Programmierung unter OO/LO und meines Wissens schon Garnichts im Sinne der StarBasic-FAQ also eine Code-Schnipselsammlung zu Standardfragen.
Gruß
Stephan
Re: "Text In Spalten" in Makro aufzeichen?
Ja - du hast mich überredet - die Kategorie wäre dann →FAQ→Python-Programmierung ?Stephan hat geschrieben:Hallo Karolus,in einer richtigen Programmiersprache
Vielleicht kann ich Dich ja überreden solche Code-Schnipsel zusätzlich in der FAQ abzulegen? Ich könnte da auch gerne eine zusätzliche Kategorie (z.B. "Python-Programmierung") dafür einrichten.
Ein Äquivalent zur StarBasic-FAQ kann und will ich daraus nicht bauen, es bleibt eine lose Sammlung von Beispielen.Stephan hat geschrieben:Grund: ich finde es gibt nach wie vor nicht allzuviel zur Python-Programmierung unter OO/LO und meines Wissens schon Garnichts im Sinne der StarBasic-FAQ also eine Code-Schnipselsammlung zu Standardfragen.
Für mich wäre es in dem Zusammenhang sehr wichtig, ein SyntaxHighlighting passend zu Python bereitzustellen, z.B. wie im Pythonforum hier zu sehen
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)