"Text In Spalten" in Makro aufzeichen?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Tinkosn
Beiträge: 2
Registriert: So, 10.08.2014 21:16

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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 ;)
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
Tinkosn
Beiträge: 2
Registriert: So, 10.08.2014 21:16

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
Karolus
********
Beiträge: 7524
Registriert: Mo, 02.01.2006 19:48

Re: "Text In Spalten" in Makro aufzeichen?

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten