Creazione csv



  • Creazione csv
    di gugluca (utente non iscritto) data: 30/11/2015 10:52:19

    Ciao,
    ho creato una semplice macro che crea un file excel e vuole poi salvarlo in csv (riporto il codice che utilizzo per il salvataggio qui di sotto).
    Usando quel codice mi crea un csv delimitato con separatore ','.
    Io vorrei che il separatore fosse ';'.

    Secondo voi, come posso intervenire?

    Grazie in anticipo per l'aiuto

    Ciao

    Luca
     
    ....
    nome = "percorso
    omefile.csv"
        ActiveWorkbook.SaveAs Filename:=nome, FileFormat _
            :=xlCSV, CreateBackup:=False, Local:=False
        Application.DisplayAlerts = True
    ....
    



  • di patel data: 30/11/2015 12:48:54

    prova così
     
    Sub rangeToCsv() '  unico foglio
        fname = "F:downloadprova.csv"
        sn = ActiveSheet.UsedRange ' da modificare
        For j = 1 To UBound(sn)
            c00 = c00 & vbCrLf & Join(Application.Index(sn, j, 0), ";")
        Next
        MsgBox Mid(c00, 2)
       
        CreateObject("scripting.filesystemobject").createtextfile(fname).write Mid(c00, 2)
    End Sub
    






  • di gugluca (utente non iscritto) data: 30/11/2015 13:35:33

    Grazie mille per l'aiuto
    Ora funziona bene.. unica cosa: ho modificato il Mid(c00, 2) in Mid(c00, 3) perchè vedevo che il csv aveva la prima riga vuota (non capisco come mai)..

    Grazie ancora!!

    Ciao!!



  • di gugluca (utente non iscritto) data: 30/11/2015 13:56:35

    Scusate, mi sono accorto ora che nella colonna D le celle nel file excel sono decimali.
    Con il salvataggio precedente venivano salvati con separatore decimale '.'
    Ora invece vengono salvati con separatore decimale ','

    Ho provato ad aggiungere il codice che riporto sotto. In excel trasformo la colonna D in formato testo e con replace sostituisco il '.' alla ',' e funziona.
    Poi nel salvare il file in csv il campo si ritrasforma in decimale con separatore ','.

    Secondo voi, come faccio ad aver un file csv separato con ';' e con separatore decimale '.'?

    Riporto qui di sotto il codice.

    Grazie ancora!

    Luca
     
    nome = "percorsofile.csv"
    
    fine = foglio_new.Range("a300").End(xlUp).Row
    
    campo = foglio_new.Range("A1:D18")
    
        foglio_new.Columns("D:D").Select
        Selection.NumberFormat = "@"                       'formatto la colonna 'D' in formato testo
        
    For i = 1 To fine                                              ' sostituisco la ',' con '.'
    
    foglio_new.Cells(i, 4) = Replace(foglio_new.Cells(i, 4), ",", ".")     
    
    Next i
    
    For i = 1 To UBound(campo)
    
    c00 = c00 & vbCrLf & Join(Application.Index(campo, i, 0), ";")
    
        Next
    CreateObject("scripting.filesystemobject").CreateTextFile(nome).Write Mid(c00, 3)
    
    



  • di patel data: 30/11/2015 16:51:43

    prova questa
     
    Sub rangeToCsv() '  unico foglio
        fname = "F:downloadprova.csv"
        sn = ActiveSheet.UsedRange
        For j = 1 To UBound(sn)
            c00 = c00 & vbCrLf & Join(Application.Index(sn, j, 0), ";")
        Next
        c00 = Replace(c00, ",", ".")
         CreateObject("scripting.filesystemobject").createtextfile(fname).write Mid(c00, 2)
    End Sub
    






  • di gugluca (utente non iscritto) data: 01/12/2015 08:27:12

    Grazie Patel,
    ora funziona benissimo.
    Semplicemente il replace dovevo metterlo dopo il ciclo sulla stringa ottenuta col concatena

    Grazie ancora per l'aiuto

    Buona giornata

    Luca