+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Creazione file Excel da file csv

  1. #1
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    253

    Creazione file Excel da file csv

    Ho la necessità di trasformare, ogni inizio settimana, un file .csv in .xls e successivamente inserire i dati in una tabella di Access
    il tutto, ovviamente, da visual basic.

    ho reperito in rete il seguente codice
    codice:
    Dim NashXl    As Object
    Dim location As String, num As Long
    Dim readfile As String
    Dim Elocation(1 To 3) As String
    
    Private Sub Command1_Click()
    Dim ArrFile() As String
    Dim DoubleLetter As Boolean
    Dim CSVFile As String
    
    
    CSVFile = Dir(App.Path & "\*.CSV")
    
    Do While CSVFile <> ""
    Set NashXl = CreateObject("excel.application")
    NashXl.Workbooks.Add
    Open CSVFile For Input As #1
    num = 0
    Elocation(1) = "A"
    Elocation(2) = "1"
    Elocation(3) = ""
    DoubleLetter = False
    Do While Not EOF(1)
    Line Input #1, readfile ' Assegna la riga a una variabile.
    'ArrFile = Split(readfile, ";")
    ArrFile = Split(readfile, ",")
    For i = 0 To UBound(ArrFile)
    NashXl.Range(Elocation(1) & Elocation(3) & Elocation(2)).Value = ArrFile(num)
    If Elocation(1) <> "Z" And DoubleLetter = False Then
    Elocation(1) = Chr$(Asc(Elocation(1)) + 1)
    num = num + 1
    Else
    If Elocation(3) = "" Then
    Elocation(1) = "A"
    Elocation(3) = "A"
    DoubleLetter = True
    Else
    Elocation(3) = Chr$(Asc(Elocation(3)) + 1)
    End If
    End If
    Next
    num = 0
    Elocation(1) = "A"
    Elocation(2) = Val(Elocation(2)) + 1
    Elocation(3) = ""
    DoubleLetter = False
    Loop
    NashXl.Visible = False
    Close #1
    
    
    NashXl.DisplayAlerts = True
    NashXl.ActiveWorkbook.SaveAs App.Path & "\Convertiti\" & Replace(UCase(CSVFile), ".csv", ".xls")
    NashXl.ActiveWorkbook.Close
    NashXl.Quit
    CSVFile = Dir()
    Loop
    MsgBox "Fatto!", vbExclamation, Me.Caption
    End Sub
    che funziona. Nel senso che, appunto crea un file .xls però quando cerco di aprire, sempre da vb, solleva l' errore
    " file non riconosciuto ".
    In effetti anche ad aprirlo da Excel mi dà un messaggio

    Errore.JPG

    ovviamente rispondo "si" e una volta aperto lo salvo. A quel punto il file è .xls e viene aperto anche all'interno di VB.
    Perchè il file generato non viene riconosciuto all'interno di VB ? Dov'è l'inghippo ?

    Scusatemi se mi sono dilungato, ho fatto numerose ricerche in rete ma non ho trovato niente per uscire da questo impiccio.
    Chiedo aiuto....
    Grazie

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,764
    Blogs
    5
    Questa probabilmente deve essere

    codice:
    NashXl.ActiveWorkbook.SaveAs App.Path & "\Convertiti\" & Replace(UCase(CSVFile), ".CSV", ".XLSX")
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    5,967
    L'estensione deve corrispondere la formato.

    Se tu, arbitrariamente, decidi l'estensione XLS ma la versione installata richiede l'estensione XLSX ovviamente è sbagliato.

    Per conoscere quale estensione devi usare, conformemente alla versione installata sul pc dell'utente, basta leggere la proprietà Version dell'oggetto Excel.Application, per cui è sufficiente, dopo aver impostato il nome del file, verificare la Version di Excel:

    codice:
            Dim sFileXLS As String
            sFileXLS = App.Path & "\cartella\miofile.xls"
            If excelApp.Version >= "12.0" Then
                sFileXLS = sFileXLS & "x"
            End If

  4. #4
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    253
    E' proprio come hai suggerito !
    Grazie infinite.

  5. #5
    pierovb non è in linea Scolaretto
    Luogo
    Reggio Calabria
    Post
    253
    Scusatemi ho risposto ad Antonio e poi ho letto il suggerimento di Gibra.
    Grazie ancora a tutt'e due.

  6. #6
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    15,764
    Blogs
    5
    Se vuoi usare il vecchio formato .xls, basta che lo indichi

    codice:
    Const xlExcel8 = 56
    codice:
    NashXl.ActiveWorkbook.SaveAs App.Path & "\Convertiti\" & Replace(UCase(CSVFile), ".CSV", ".XLS"), xlExcel8
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi