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