Precedente :: Successivo |
Autore |
Messaggio |
alessandrov Comune mortale
Registrato: 31/03/20 23:13 Messaggi: 3
|
Inviato: 31 Mar 2020 23:20 Oggetto: LibreOffice - Estrazione Data ed Ora da Data/ora VBA |
|
|
Salve,
sto utilizzando le macro VBA di libreoffice per estrarre data "dd/mm/aaaa" ed ora "hh:mm:ss" da un campo data/ora "dd/mm/aaaa hh:mm:ss".
Per questo ho utilizzato il seguente codice:
xlsSheetReport.Range("B" & TableIndexL).Value = CDate(FormatDateTime(Range("B" & i).Value, vbShortDate))
xlsSheetReport.Range("C" & TableIndexL).Value = FormatDateTime(Range("B" & i).Value, vbLongTime)
Utilizzando il vbLongTime, per estrarre l'ora, ho notato che delle volte i secondi non corrispondono per un unità .
Elaborando per esempio "20/03/2020 09:43:06", l'ora estratta col vbLongTime è "09:43:05".
Avete mai riscontrato questo problema?
Esistono altre funzioni con il quale posso estrarre l'ora in modo preciso? |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 01 Apr 2020 13:54 Oggetto: |
|
|
le date/ore in excel sono memorizzate come dei numeri frazionari quindi ci potrebbero sempre essere errori di approssimazione...
altrimenti usi testo ma a quel punto devi tenere d'occhio il formato, se no sono guai
se però il formato iniziale è testo, puoi semplicemente separare le due parti (data e ora) trovando dove sta lo spazio... |
|
Top |
|
|
alessandrov Comune mortale
Registrato: 31/03/20 23:13 Messaggi: 3
|
Inviato: 01 Apr 2020 14:30 Oggetto: |
|
|
In realtà il dato sorgente l'ho provato a cambiare anche manualmente, evitando errori di appossimazione. ll risultato comunque è lo stesso.
Probabilmente la soluzione più immediata, come tu suggerisci, è utilizzare lo split con il carattere spazio, oppure utilizzare i comandi right e left per prendersi la data e l'ora. |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 02 Apr 2020 12:32 Oggetto: |
|
|
l'altra ipotesi, un po' più perversa, è che la risoluzione del tipo shortDate sia a 2 secondi, come è in altri linguaggi di programmazione
l'effetto è che le date vengono fuori tutte con i secondi pari, anche quando sono dispari
se provi a fare la conversione al tipo data (CDate) senza passare dal formato shortDate, cambia qualcosa? |
|
Top |
|
|
alessandrov Comune mortale
Registrato: 31/03/20 23:13 Messaggi: 3
|
Inviato: 03 Apr 2020 09:06 Oggetto: |
|
|
In realtà, come scritto nel primo post, l'ora restituita con vbLongTime era dispari invece che pari. Il problema me lo da su vbLongTime, non su shortDate.
Comunque ho risolto facendo lo split con gl spazi e prendendo array (0) come data e array (1) come ora.
Probabilmente è qualche limitazione di libreoffice?! |
|
Top |
|
|
SverX Supervisor Macchinisti
Registrato: 25/03/02 11:16 Messaggi: 11568 Residenza: Tokelau
|
Inviato: 03 Apr 2020 10:49 Oggetto: |
|
|
onestamente non so dirti, ma era proprio perché lo shortDate aveva i secondi pari che mi suggeriva che fosse un problema di risoluzione del formato breve - ma può essere di no
bene che hai risolto con uno split, che se parti da una stringa e vuoi due stringhe alla fine direi che è la soluzione più efficiente
|
|
Top |
|
|
|