Seite 1 von 1
Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: So, 10.08.2014 20:43
von Karolus
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
Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: So, 10.08.2014 22:38
von Karolus
Hallo
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
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
Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: So, 10.08.2014 23:18
von Tinkosn
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

Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: So, 10.08.2014 23:33
von F3K Total
Hi,
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
HTH R
Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: So, 10.08.2014 23:57
von Tinkosn
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
Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: Mo, 11.08.2014 07:59
von Karolus
Hallo
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 )
Karolus
Re: "Text In Spalten" in Makro aufzeichen?
Verfasst: Mo, 11.08.2014 09:06
von Stephan
in einer richtigen Programmiersprache
Hallo Karolus,
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?
Verfasst: Mo, 11.08.2014 11:01
von Karolus
Stephan hat geschrieben:in einer richtigen Programmiersprache
Hallo Karolus,
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.
Ja - du hast mich überredet - die Kategorie wäre dann
→FAQ→Python-Programmierung ?
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.
Ein Äquivalent zur StarBasic-FAQ kann und will ich daraus nicht bauen, es bleibt eine lose Sammlung von Beispielen.
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