tirsdag den 11. oktober 2016

Makro i regneark: Konvertér tekst til dato

I den makro jeg har brugt som demonstration, og hvor vi indlæste CSV-filen linje for linje, så vi denne "krølle":

If c=0 Then
        t= split(s, "-", 3)
        s=DateSerial(t(2), t(1), t(0))
End if
        my_cell.Value=s
  

Du kan læse artiklen her: http://libreofficedk.blogspot.dk/2016/10/indlse-en-fil-linje-for-linje-makro.html

Forklaring:
s er den tekst vi modtager fra CSV-filen, og vi ved at formatet er i tekstformatet "dd-mm-åååå". Hvis vi indsætter teksten som streng (my_cell.String=s) vil indholdet af cellen få tekstformat og hvis vi indsætter teksten som en værdi (my_cell.Value=s) vil indholdet blive fortolket og omsat til et mere eller mindre tilfældig heltal (muligvis en intern datoværdi).

Vi bliver altså nødt til at fortolke tekststrengen og splitte den op i flere elementer. Kommandoen kunne lyde: Split tekststrengen op i tre dele, hvor "-" er adskiller:
split(s, "-", 3)

Du kan læse mere om Split-funktionen her: https://help.libreoffice.org/Basic/Split_Function_Runtime/da

Sæt derefter de tre dele sammen til en datoværdi:
DateSerial(t(2), t(1), t(0))

Du kan læse mere om DateSerial-funktionen her: https://help.libreoffice.org/Basic/DateSerial_Function_Runtime/da