Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    32

    macro per Aprire Origine Dati (file csv)

    ciao a tutti,
    ho un problema con excel.
    ho creato una macro(semplicissima) che mi apre tre file csv.

    Dim EXPAZIPRO As String
    Dim EXPAZIREGIO As String
    Dim EXPAZICOMU As String




    Sub OpenFile()
    ' VARIABILI PERCORSO FILE
    EXPAZIPRO = "c:\Controllo770\CSV\EXPAZIPRO.csv"
    EXPAZIREGIO = "c:\Controllo770\CSV\EXPAZIREGIO.csv"
    EXPAZICOMU = "c:\Controllo770\CSV\EXPAZICOMU.csv"

    Workbooks.Open Filename:=EXPAZIPRO, ReadOnly:=True
    Workbooks.Open Filename:=EXPAZIREGIO, ReadOnly:=True
    Workbooks.Open Filename:=EXPAZICOMU, ReadOnly:=True



    End Sub

    Aprendo i file con il semplice doppio clic i dati vengono divisi mentre se uso la macro sopracitata i fdati non vengono divisi (rimangono separati dal punto e virgola).

    qualcuno sa dirmi quale passaggio mi manca??
    grazie mille in anticipo!!!

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Hai provato ad aggiungere alla Open il parametro Format?

    codice:
    Workbooks.Open Filename:=EXPAZIPRO, ReadOnly:=True, Format:=xlCSV
    Boolean

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    32

    grazie

    grazie Boolean

    ma avevo gia provato...
    mi da errore 1004 metodo open di oggetto workboos non riuscito...
    ho provato a mettere anche xlcsvwindows o xlcsvmsdos ma non funziona mi da lo stesso errore...

    grazie lostesso.

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Perchè con il doppio clic Excel 'ragiona' a modo suo e, quasi sempre ci prende.
    Ma se tu scrivi codice (il tuo non mi pare proprio essere una vera macro), lui esegue 'esattamente' quello che scrivi tu.

    Invece, dovresti avviare la registrazione di una macro ed eseguire tutte le azioni che ti serono, ovvero
    File -> Apri -> selezioni la cartella -> selezioni uno dei tuoi file CSV
    ecc. ecc. ecc.

    Quando ha concluso, salvi la macro.
    Ora puoi aprirti lo script generato dalla macro, vedere cosa ha scritto ed infine modificare la tua routine correttamente.


  5. #5
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Originariamente inviato da gibra
    Invece, dovresti avviare la registrazione di una macro ed eseguire tutte le azioni che ti serono, ovvero
    File -> Apri -> selezioni la cartella -> selezioni uno dei tuoi file CSV
    ecc. ecc. ecc.

    Quando ha concluso, salvi la macro.
    Ora puoi aprirti lo script generato dalla macro, vedere cosa ha scritto ed infine modificare la tua routine correttamente.
    Sinceramente, preso dalla curiosità, avevo fatto anche io questa prova.
    Risultato: il codice prodotto dalla registrazione è quello già usato da joegis84.
    Infatti quando si compie l'operazione di apertura con Open, durante la registrazione, il file viene aperto correttamente, ma se si prova a lanciare il codice della macro appena registrata, il CSV viene aperto con ogni riga tutta sulla prima cella.

    Boolean

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    32
    ragazzi,

    ho trovato una soluzione.

    faccio uno split sulle celle e riscrivo il file in xls...
    speriamo che funzioni.

    se funziona vi faccio sapere come ho fatto!!!

    buona giornata a tutti.

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Perchè probabilmente Excel tenta di indovinare in automatico, ma in questo caso evidentemente 'sbaglia' (è capitato anche a me) forse perchè la formattazione del file non è esattamente come la vuole lui.

    Ho fatto una prova utilizzando un mio vecchio file che ha stringhe delimitate dal carattere Pipe (|).
    Dopo aver selezionto il file è partito il wizard, ho impostato il delimitatore su |, impostato tutti i campi di tipo carattere, e questo è il risultato:

    codice:
    Sub ApriCSV()
    '
    ' ApriCSV Macro
    ' Prova CSV
    '
        ChDir "D:\Documenti\_VB\_miei\VisualDB\BAAN_Migrazione"
        Workbooks.OpenText Filename:= _
            "D:\Documenti\_VB\_miei\VisualDB\BAAN_Migrazione\baan_agenti.txt", Origin:= _
            xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
            , ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:= _
            False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array( _
            Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2)), TrailingMinusNumbers:=True
    End Sub
    Ovviamente dovrai sostituire usando i tuoi dati:
    - il nome del file
    - il carattere delimitatore
    - le occorrenze di Array(x,x)

    Fatto questo dovrebbe funzionare.

    Eventualmente puoi fare una prova con un tuo file, bastano poche righe di prova, in cui sostituisci il delimitatore esistente con il Pipe (|).
    Dovrebbe partirti il wizard ed a quel punto è banale. Basta ricordarsi di impostare tutti i campi su Carattere altrimenti c'è il rischio per Excel interpreti Numeri invece di Codici e ti toglie eventuali zeri iniziali (come avviene sempre con i numeri di Partita IVA!!!).



  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    32

    EVVIVAAAA

    SEI UN GRANDE!!!!!!!!!!!!!!

    MI HAI RISPARMIATO UN BEL PO DI LAVORO...


    GRAZIE MILLE

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    32
    non funziona più...
    non importa continuo con il mio split.

    grazie comunque.

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.