2012-12-05 12 views
12

Ho aperto il file txt delimitato da punto e virgola con questo codice sotto e il numero di conto lungo visualizzato come notazione scientifica dopo il salvataggio in Excel, indipendentemente dalla formattazione del testo in quella colonna .Come importare un numero lungo da csv a excel senza convertire in notazione scientifica in VBA

Cosa ho fatto di sbagliato qui?

Application.ScreenUpdating = False 
    Workbooks.OpenText fileName:=Filetxt, Origin:=xlWindows, StartRow _ 
    :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ 
    ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False, _ 
    Space:=False, Other:=False, Local:=True, _ 
    FieldInfo:=Array(Array(1, 4), Array(2, xlTextFormat) 
    'Save text file as csv file 
    Set wb = ActiveWorkbook 
    Application.DisplayAlerts = False 
    wb.SaveAs fileName:=fileXls, FileFormat:=6, _ 
    ReadOnlyRecommended:=False, _ 
    CreateBackup:=False 
    Application.DisplayAlerts = True 
    wb.Close savechanges:=True 

record in file txt assomiglia a questo: 2011-12-21; 100,00; "21375000120000010020601764"

E quando apro file appena salvato vedo 2.117500012E + 25 invece di quel numero . cosa c'è che non va qui?

risposta

3

In Excel i numeri sono limitati a 15 cifre di precisione. Il tuo numero di esempio è troppo grande perché Excel possa essere rappresentato in modo preciso, il che potrebbe spiegare la conversione in notazione scientifica.

È necessario importare quella colonna in Excel come Testo, non Numero: quindi non si perderà alcuna precisione.

EDIT: se fate un passo attraverso il processo "aperto dal testo" durante la registrazione di una macro si dovrebbe ottenere qualcosa di simile:

Workbooks.OpenText Filename:= Filetxt, Origin:=xlWindows, _ 
     StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ 
     ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:=False _ 
     , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 5), Array(2, 1), _ 
     Array(3, 2)), TrailingMinusNumbers:=True 

C'è un passo in quel processo che consente di selezionare il tipo di i dati sono in ogni colonna.

tuo Parametro "FieldInfo" è un po 'fuori penso: si dovrebbe avere 3 colonne, ma hai etichettato col2 come testo ...

+0

questo è quello che mi piacerebbe fare ma come? Ho pensato che quando inserisco la formattazione come testo in fieldinfo lo farà ma no. –

+0

grazie amico, sparo ho smarrito le colonne in fieldinfo. Adesso funziona. –

24

ero l'importazione di prodotti in un file Excel e il codice a barre verrei come una notazione scientifica (ad es 5.4265E + 12)

Questo significava quando ho convertito il file in un file CSV per caricare i dettagli, il csv non stava leggendo i codici a barre correttamente e cambiarli a 52.862,3 milioni, ecc

Per combatterlo:

  • aperto come un foglio di Excel (o convertire se non è possibile aprire come uno)
  • evidenziare il (codice a barre/notazione scientifica) colonna
  • Andate in dati/Testo in colonne
  • Pagina 1: Controllare ' delimitato'/ Avanti
  • Pagina 2: Controllare 'Tab' e il cambiamento 'Testo Qualifier' a "/ Prossimo
  • Page 3: Controllare 'Testo', piuttosto che 'generale'
  • Fine

Ciò dovrebbe convertirli tutti per visualizzare come il numero lungo. È quindi possibile salvarlo come file CSV e i numeri non verranno convertiti/formattati in numeri scientifici.

Spero che questo aiuti !!

+1

Perché non è stato ancora accettato? – Kristopher

+0

Oppure selezionare la colonna -> scheda Home -> numero sottoscheda -> cambia menu a discesa "Generale" a "Testo" – alexey

+0

Sei fantastico! – FisherCoder

1

Il mio sistema è mac os X EI Capitan, quando copio i dati in Excel dalla tabella html, il numero sempre auto convertito in 1.10101E + 17 ecc. Quando cambio "formato celle" in testo, il numero non è corretto.

La mia volontà è:

  1. aprire il software del sistema operativo Mac "Numeri" e creare una nuova scheda
  2. copia dei dati per scheda, vedrete numero corretto
  3. aperte Microsoft Excel numero di modifica colonne " celle "nel testo
  4. copia i dati dalla scheda Numeri;
  5. tasto destro del mouse su "Opzionale incolla" selezionare Testo e ok.

Non so perché ma è lavoro per me.

Problemi correlati