› Excel e gli applicativi Microsoft Office › problema import excel-access
-
AutoreArticoli
-
Chiudiamo l'anno con un semplice problemino.
Sto cercando di importare in access una tabella excel. Da Access, new source, excel, wb book1, sheet LibroSoci, nuova tabella Access. Su circa 1700 records, access segnala errore di conversione su 401 record, sul campo Data Ammissione, che è uno short date formato dd/mm/yyyy, e in quei record lascia il campo vuoto. Non sono riuscito a capire che cosa ci sia di diverso in questi 401 record rispetto agli altri.
Allego estratto del file excel e immagine parziale della tabella ImportErrors di access (sono 401 record, fidatevi). Magari qualcuno ha l'occhio di lince e vede subito il problema.
Auguri a tutti per un felice Anno nuovo
Allegati:
You must be logged in to view attached files.Per qualche strana ragione sembrache il campo Data cessazione abbia qualche problema.
Prova così:
1. da Excel salva il file su file di testo con tabulazione
2. da Access esegui l'importazione da file testo
3. apri la tabella in struttura e modifica su Data/Ora il campo Data cessazione
BUONE FESTE
Ciao, grazie per la risposta e l'attenzione. Ti descrivo altri misteri e come ho risolto la cosa (risolvere in questo caso non vuol dire aver capito). In sostanza, ho risolto senza capire che cosa non va a genio a Excel, il che mi lascia inquieto.
Mistero 1. Selezionando la colonna Data ammissione, e cambiando il formato da Date a General, tutte le date (tranne le 401) appaiono come numeri: le 401 rimangono date. Tentativo di conclusione: quelle 401, pur sembrando date, non lo sono ma sono testo.
Mistero 2. Provo a trasformare tutte le date in testo, almeno per uniformare le cose. Scrivo quindi in ua colonna a parte:
=TEXT(Tabella4[@[Data Ammissione];"dd/mm/yyyy")
TUTTE le entries (incluse le 401) della colonna Data Ammissione danno errore #VALUE!, a prescindere quindi da quanto contenuto nella cella. la funzione è corretta, ci sono innumerevoli esempi su internet
La disperazione spinge ad una ricerca su Internet. Il mio salvatore, non so chi nè come gli sia venuto in mente, suggerisce di provare con text-to-column. Che ç@## ! c'entri non lo so, fatto sta che :
seleziono la colonna Data ammissione;
dal ribbon data prendo text-to-column
nei dialoghi successivi, lascio Delimited e nessun carattere delimiter
scelgo formato uscita date(dmy)
Miracolosamente tutte le celle della colonna si trasformano (anche se non si vede) in date corrette, che vengono importate senza ulteriori errori.
Ho risolto, ma non ho capito. Lasciamo perdere o ci incaponiamo?
Ciao Roberto , l'errore è nel file Excel Book 1 è la colonna data , se tu cambi il formato da data a generale vedi tutti gli errori , poi hai il riferimento nel database che ti dice il numero della riga che c'è l'errore
Vedi il file allegato te l'ho corretto io , prova con questo e vedi
Allegati:
You must be logged in to view attached files.Grazie Oscar, ma come vedi nel mio post precedente ci ero già arrivato, e conoscevo perfettamente le 401 righe che davano errore. Il problema è che non so tuttora che cosa ci sia in quelle celle, e comunque non riesco in alcun modo logico a trasformarle in date reali (modo logico intendo: seleziono la cella, e la formatto come short date. La cella non fa una piega, ma rimane quello che è, ossia ignota, anche se all'apparenza sembra una data). Anche il tentativo di trasformarle tutte in testo è fallito miseramente, e non mi spiego il motivo.
Alla fine ci sono riuscito con l'inghippo indicato nel post, che comunque mi ha lasciato parecchi dubbi
Aggiungo solo che usando la tabella con l'applicazione vba excel (non access) no mi ha mai dato problemi.
Grazie comunque e ciao
Scusa, ho visto ora l'allegato. Vero, funziona. Come hai fatto a cambiare il formato? io, nel mio file originale, comunque non ci riesco: con General, quelle date non si convertono in numeri, ma rimangono dd/mm/yyyy, e anche cercandio di forzarle a date, non si spostano. Che sia la versione di Excel??
l'ho convertito con CDate
Private Sub CommandButton1_Click()
For i = 2 To 1685
Cells(i, 4) = CDate(Cells(i, 4))
Next
End SubChiudiamo questa storia. La soluzione di Oscar fa uso di VBA, ma la soluzione, confesso, è molto più banale. Fermo restando quanto notato nel mio post, l'errore che ricevevo nella funzione TEXT era dovuto al fatto che, nonostante io abbia excel impostato in inglese US, il formato data è comunque rimasto a gg/mm/aaaa, e non, come pensavo io, dd/mm/yyyy. Quindi,
=TEXT([@[Data ammissione]];"gg/mm/aaaa")
ha funzionato su tutte le celle della colonna data ammissione, nessuna esclusa, anche sulle famose 401 (che, peraltro, ripeto, non cambiano in numero quando vengono riformattate a General e che quindi devono avere qualcosa di diverso). Riformattando la nuova colonna in Date, e riportandola come value sulla colonna originale, non ci sono più problemi.
Grazie dell'attenzione
Ma e ovvio che se formatti una cella in formato data con formula in formato TEXT il formato è "gg/mm/aaaa) , mentre con il VBA è "dd/mm/yyyy" l'inglese qui non centra proprio nulla
Dipende. L'inglese c'entra se il regional format viene messo a, per esempio, English world. In questo caso gg/mm/aaaa non funziona, mentre dd/mm/yyyy sì. Nel mio caso io, che sono un po' fuori, avevo sì Region a US, ma avevo lasciato regional setting a Italy, creando un casino di cui mi sono reso conto troppo tardi. Non si finisce mai di imparare.
-
AutoreArticoli