delimitatore Csv



  • delimitatore Csv
    di almanegrita (utente non iscritto) data: 01/04/2017 17:45:29

    ciao a tutti e ben trovati.
    vorrei modificare un macro con cui mi avete aiutato a fare belle cose.
    La macro importa un csv che ha solo il ; come separatore tra i valori.......
    ora io ho un csv che ha le doppie virgolette come qualificatore del testo "testo bla bla bla" e il Pipe come separatore di colonna.
    Ho modificato qualcosina ma non riesco a capire cosa mettere per fargli capire che il testo sta in mezzo alle virgolette.
    il pipe lo prende ma le celle me le riempie prendendo testo e virgolette
    Ho provato a fare un import con il registratore di macro ed ho scoperto che ( .TextFileTextQualifier = xlTextQualifierDoubleQuote) è quello che mi ci vorrebbe, ma dove andrebbe inserito ?
    Grazie a tutti per l'aiuto.
     
    Sub importa_ordini()
    Dim line As String
    Dim arrayOfElements
    Dim linenumber As Integer
    Dim elementnumber As Integer
    Dim element As Variant
    Columns("A:W").Select
    Selection.ClearContents
    Range("E26").Select
    linenumber = 0
    elementnumber = 0
    filepath = ActiveWorkbook.Path & "ordinifornitore.csv"
    Open filepath For Input As #1 ' Open file for input
        Do While Not EOF(1) ' Loop until end of file
            linenumber = linenumber + 1
            Line Input #1, line
            arrayOfElements = Split(line, "|")
    
            elementnumber = 0
            For Each element In arrayOfElements
                elementnumber = elementnumber + 1
                Cells(linenumber, elementnumber).Value = element
            Next
        Loop
    Close #1 ' Close file.
    End Sub
    



  • di patel data: 01/04/2017 18:46:52

    allega un csv di esempio e vediamo cosa si può fare




  • delimitatore Csv
    di almanegrita (utente non iscritto) data: 01/04/2017 18:56:30

    eccvelo, io avevo pensato ad una cosa ma non so se esiste in VBA,
    che il ssitema poteva chiedere all'inizio quale era il delimitattore di campo e quale era il qualificatore di testo.
    ma forse diventa un po troppo complesso.



  • di Marius44 data: 01/04/2017 21:46:40

    Salve a tutti

    con il pipe hai delimitato il testo che ti serve che, però, è compreso fra i doppi apici all'inizio e alla fine.
    Conta la lunghezza del testo e togli il primo token e l'ultimo.

    Ciao,
    Mario


  • de limitatore Csv
    di almanegrita (utente non iscritto) data: 02/04/2017 00:01:41

    Non capisco...aiutatemi please. .



  • di patel data: 02/04/2017 08:25:12

    la tua macro è perfetta, basta una piccola modifica
     
            For Each element In arrayOfElements
                elementnumber = elementnumber + 1
                Cells(linenumber, elementnumber).Value = Replace(element, """", "") ' <<<<<<<<< modificata
            Next






  • di almanegrita (utente non iscritto) data: 02/04/2017 08:33:42

    allora si grazie emille.....avevo risolto con una versione piu barbara registrndo una macro che eliminava gli "", ma la vostra è piu fine...:).
    Ora pero mi capita questo provlema........
    che praticamente gli ordini non vengono incolonnati....ma excele me li importa tutti su una riga........
    è mai possibiel ?
    Ho provato a mettre la sub in un file nuovo e pulito e mi funziona......l'ho provata a mettere in un altro file e mi sballla tutto....come mai secondo voi ?



  • di patel data: 02/04/2017 12:24:46

    non saprei, col tuo file che hai allegato a me funziona perfettamente, forse non tutti i file sono uguali