Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    67

    Esportando da Access ad Excel cambia il formato dei dati

    Salve,
    avrei un piccolo problema.

    Estraggo da una tabella Access i dati di due campi e li esporto in due colonne Excel in questo modo:

    i = 1
    RS.MoveFirst
    Do Until RS.EOF
    foglioExcel.Cells(i, 1) = RS("Codice").Value
    foglioExcel.Cells(i, 2) = RS("Descrizione").Value
    RS.MoveNext
    i = i + 1
    Loop

    tutto funziona perfettamente, i dati vengono esportati senza problemi, ma se nel campo Codice è inserito un valore come 01-1965, nella cella di Excel me lo ritrovo come gen-65, in pratica, interpreta alcuni valori come se fossero date.

    Ho provato anche a formattare le celle di Excel in vario modo, con il risultato che cambiava di volta in volta solo il formato della data.

    Credo debba essere formattato il valore RS("Codice").Value, ma non sono riuscito a trovare il modo.

    Il campo Codice nella tabella Access è di tipo testo.
    Excel versione 11.

    Mi aiutate?

    Grazie.

  2. #2
    Excel lo interpreta come data. Quindi è in Excel che devi agire, forzando la cella in formato testo.

    Se non ci riesci puoi sempre provare a metterci l'apice singolo davanti al codice. Come nell'esempio:


    i = 1
    RS.MoveFirst
    Do Until RS.EOF
    foglioExcel.Cells(i, 1) = "'" & RS("Codice").Value
    foglioExcel.Cells(i, 2) = RS("Descrizione").Value
    RS.MoveNext
    i = i + 1
    Loop

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    67
    Si, funziona e ti ringrazio di avermi risposto.

    Vorrei solo capire (mi sono avvicinato a VB da due settimane):
    - perchè l'apice non compare nella cella di Excel
    - come si impone il formato testo alla cella di Excel (nell'MSDN ho trovato solo i riferimenti al formato numerico e data).

  4. #4
    La storia dell'apice nella cella di Excel è un trucco che trovai anni fa. Non si trova nei manuali ma spesso mi ha risolto problemi simili al tuo per impostare la cella in formato testo.
    Sicuramente esiste una soluzione più elegante...ma per ora va bene cosi

  5. #5
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da prof403
    ....
    - come si impone il formato testo alla cella di Excel (nell'MSDN ho trovato solo i riferimenti al formato numerico e data).
    Ciao, sai farlo in excel? Se la risposta è si, hai la soluzione in mano... nel senso che basta attivare il registratore di macro, fare le operazioni necessarie per la formattazione delle celle come vuoi tu, e ti ritrovi il codice pronto, magari apportando poche modifiche, per usare in VB.
    Jupy

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    67
    Per il momento ho risolto scrivendo

    foglioExcel.Cells(i, 1) = Format(Codice, "! @@@@@@@")

    la chiocciola è il segnaposto di un carattere stringa;
    il punto esclamativo impone il riempimento da sinistra a destra (di default è il contrario);
    lo spazio tra punto esclamativo e prima chiocciola fa funzionare meglio il tutto, senza spazio Excel 11 non trasforma il codice in data, ma compare nella cella il classico triangolino verde che informa del formato data non corretto;
    nella cella mi ritrovo il codice con uno spazio vuoto davanti, ma la cosa, per fortuna, non è condizionante.

    Proverò con le macro di Excel, non ci avevo pensato, grazie del consiglio.

  7. #7
    Se ti interessa c'è un altro metodo più comodo per formattare le celle.

    Public appExcel As New Excel.Application

    FoglioExcel.Columns("A:A").Select 'è come se tu selezionassi l'header della colonna
    appExcel.Selection.NumberFormat = "@" 'in questo modo tutte le celle della colonna sono
    'in formato testo.

    Se invece di una colonna vuoi formattare più colonne, invece di usare FoglioExcel.Columns("A:A").Select usi FoglioExcel.Range("A1:J1").Select

    Spero ti possa aiutare in futuro anche se con un pò di ritardo...

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da ViRuSGvNn
    Spero ti possa aiutare in futuro anche se con un pò di ritardo...
    Non si sollevano discussioni per rispondere a domande proposte mesi o addirittura un anno fa.

    Così facendo, si propongono soluzioni a persone che facilmente hanno già risolto il proprio problema, facendo scalare verso il basso le discussioni più recenti che, invece, sono senz'altro più seguite.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.