Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Moderator: Moderatoren
Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Hallo,
ich muss mehrmals am Tag aus einer Datenbank eine Tabelle exportieren, bei der in 2 Spalten (B und D) die Zellinhalte als Dezimalzahl ausgegeben werden obwohl es sich eigentlich um Datumswerte handelt, also z.B. 4072018 anstatt 04.07.2018. Das geht technisch nicht anders. Mit Spalte markieren -> Data -> Text in Spalten -> Auf Spalte klicken -> Spaltentyp: Datum (TMJ) kann ich das händisch in das gewünschte Format umwandeln. Jetzt möchte ich das gerne als Makro haben, denn das ist sonst ziemlich aufwändig das die ganze Zeit händisch zu machen. Die Spalten haben immer dieselbe Überschrift.
Kann mir bitte jemand damit helfen? Vielen Dank!
ich muss mehrmals am Tag aus einer Datenbank eine Tabelle exportieren, bei der in 2 Spalten (B und D) die Zellinhalte als Dezimalzahl ausgegeben werden obwohl es sich eigentlich um Datumswerte handelt, also z.B. 4072018 anstatt 04.07.2018. Das geht technisch nicht anders. Mit Spalte markieren -> Data -> Text in Spalten -> Auf Spalte klicken -> Spaltentyp: Datum (TMJ) kann ich das händisch in das gewünschte Format umwandeln. Jetzt möchte ich das gerne als Makro haben, denn das ist sonst ziemlich aufwändig das die ganze Zeit händisch zu machen. Die Spalten haben immer dieselbe Überschrift.
Kann mir bitte jemand damit helfen? Vielen Dank!
Re: Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Hallo,
das heißt du möchtest per Makro eine csv-Datei in Calc importieren?
das heißt du möchtest per Makro eine csv-Datei in Calc importieren?
Gruß,
mikeleb
mikeleb
Re: Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Nein, die Tabelle wird als xls ausgegeben, da muss ich gar nichts ändern. Mit dem Makro möchte ich das, was ich mit Spalte markieren -> Data -> Text in Spalten -> Auf Spalte klicken -> Spaltentyp: Datum (TMJ) händisch machen kann in einem Schritt erledigen.
Re: Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Hallo,
eine mögliche Variante:
eine mögliche Variante:
Code: Alles auswählen
Sub Main
Dim datum as long
odoc=thiscomponent
otab=odoc.currentcontroller.activesheet
ocur=otab.createcursor
ocur.gotoendofusedarea(false)
n=ocur.rangeaddress.startrow
obereich=otab.getcellrangebyposition(1,1,3,n)
adaten()=obereich.getdataarray
for i=0 to ubound(adaten)
wert=adaten(i)(0)
if wert<>"" then
stext=format(wert,"00\.00\.0000")
if isdate(stext) then
datum=cdate(stext)
adaten(i)(0)=datum
end if
end if
wert=adaten(i)(2)
if wert<>"" then
stext=format(wert,"00\.00\.0000")
if isdate(stext) then
datum=cdate(stext)
adaten(i)(0)=datum
end if
end if
next
obereich.setdataarray(adaten())
Dim Localformat as new com.sun.star.lang.Locale
numberformats = odoc.numberformats
numberformatstring = "TT.MM.JJ"
numberformatid = numberformats.queryKey(numberformatstring, Localformat, True)
if numberformatId = -1 then
numberformatId = numberformats.addNew(numberformatstring,Localformat)
end if
otab.columns(1).numberformat=numberformatid
otab.columns(3).numberformat=numberformatid
End Sub
Gruß,
mikeleb
mikeleb
Re: Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Hallo, vielen herzlichen Dank, für die zweite Spalte funktioniert das einwandfrei, bei der vierten gibt er aber falsche Daten aus.mikeleb hat geschrieben: ↑Mi, 17.10.2018 22:21 Hallo,
eine mögliche Variante:Code: Alles auswählen
Sub Main Dim datum as long odoc=thiscomponent otab=odoc.currentcontroller.activesheet ocur=otab.createcursor ocur.gotoendofusedarea(false) n=ocur.rangeaddress.startrow obereich=otab.getcellrangebyposition(1,1,3,n) adaten()=obereich.getdataarray for i=0 to ubound(adaten) wert=adaten(i)(0) if wert<>"" then stext=format(wert,"00\.00\.0000") if isdate(stext) then datum=cdate(stext) adaten(i)(0)=datum end if end if wert=adaten(i)(2) if wert<>"" then stext=format(wert,"00\.00\.0000") if isdate(stext) then datum=cdate(stext) adaten(i)(0)=datum end if end if next obereich.setdataarray(adaten()) Dim Localformat as new com.sun.star.lang.Locale numberformats = odoc.numberformats numberformatstring = "TT.MM.JJ" numberformatid = numberformats.queryKey(numberformatstring, Localformat, True) if numberformatId = -1 then numberformatId = numberformats.addNew(numberformatstring,Localformat) end if otab.columns(1).numberformat=numberformatid otab.columns(3).numberformat=numberformatid End Sub
Re: Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Hallo,
Um dafür eine Lösung zu finden, wäre es hilfreich eine Beispieldatei (kein Screenshot) zu haben.
Was bedeutet "falsch"?bei der vierten gibt er aber falsche Daten aus
Um dafür eine Lösung zu finden, wäre es hilfreich eine Beispieldatei (kein Screenshot) zu haben.
Gruß,
mikeleb
mikeleb
Re: Text in Spalten -> Spaltentyp: Datum (TMJ) als Makro
Hallo,
ich habe den Fehler gefunden (nach markieren, kopieren, einfügen musste natürlich noch der Parameter angepasst werden)
Aus am Ende der Schleife muss natürlich werden
ich habe den Fehler gefunden (nach markieren, kopieren, einfügen musste natürlich noch der Parameter angepasst werden)
Aus
Code: Alles auswählen
adaten(i)(0)=datum
Code: Alles auswählen
adaten(i)(2)=datum
Code: Alles auswählen
Sub Main
Dim datum as long
odoc=thiscomponent
otab=odoc.currentcontroller.activesheet
ocur=otab.createcursor
ocur.gotoendofusedarea(false)
n=ocur.rangeaddress.startrow
obereich=otab.getcellrangebyposition(1,1,3,n)
adaten()=obereich.getdataarray
for i=0 to ubound(adaten)
wert=adaten(i)(0)
if wert<>"" then
stext=format(wert,"00\.00\.0000")
if isdate(stext) then
datum=cdate(stext)
adaten(i)(0)=datum
end if
end if
wert=adaten(i)(2)
if wert<>"" then
stext=format(wert,"00\.00\.0000")
if isdate(stext) then
datum=cdate(stext)
adaten(i)(2)=datum
end if
end if
next
obereich.setdataarray(adaten())
Dim Localformat as new com.sun.star.lang.Locale
numberformats = odoc.numberformats
numberformatstring = "TT.MM.JJ"
numberformatid = numberformats.queryKey(numberformatstring, Localformat, True)
if numberformatId = -1 then
numberformatId = numberformats.addNew(numberformatstring,Localformat)
end if
otab.columns(1).numberformat=numberformatid
otab.columns(3).numberformat=numberformatid
End Sub
Gruß,
mikeleb
mikeleb