macro importa files csv



  • macro importa files csv
    di re.king data: 21/01/2015 10:45:08

    Buongiorno carissimi.
    Necessito di un Vostro preziosissimo aiuto.
    Necessito di una macro che mi permetta di importare in un solo foglio excel 2007 oltre 500 files csv contenuti nella cartella historicaldata (percorso c:historicaldata).
    Vi prego aiutatemi.

    Grazie



  • di lepat (utente non iscritto) data: 21/01/2015 11:13:12

    allega un esempio di csv



  • di re.king data: 21/01/2015 11:39:42

    Ho allegato uno dei 500 files della cartella.

    Ti ringrazio di vero cuore per l'aiuto.




  • di lepat (utente non iscritto) data: 21/01/2015 13:18:03

    prova questa
     
    Sub importafolder()
      Dim DestinationSheet As Worksheet
      Dim CSVfolder As String
      Dim CSVfile As String
      Dim stRw As Long
      Dim wbNew As Workbook
      
      stRw = 1
      CSVfolder = "c:historicaldata"
      
      Set DestinationSheet = Worksheets(1)
      Application.ScreenUpdating = False
      If Right(CSVfolder, 1) <> "" Then CSVfolder = CSVfolder & ""
      CSVfile = Dir(CSVfolder & "*.csv")
      While CSVfile <> ""
        Set wbNew = Workbooks.Open(Filename:=CSVfolder & CSVfile)
        If Not wbNew Is Nothing Then
          With DestinationSheet
            .Range("A" & stRw).Value = CSVfile    'CSVfolder & CSVfile
            Range("A1").CurrentRegion.Offset(1, 0).Copy .Range("A" & stRw + 1)
            stRw = .Cells(Rows.Count, "A").End(xlUp).Row + 2
          End With
          wbNew.Close False
        End If
        CSVfile = Dir()
      Wend
      Set wbNew = Nothing
      Set DestinationSheet = Nothing
      Application.ScreenUpdating = True
    End Sub



  • di re.king data: 21/01/2015 14:52:54

    Scusa Lepat,
    forse non ho ben precisato di cosa necessito.
    La macro deve aprire i 500 file csv contenuti nella cartella historicaldata e importarne il contenuto in un unico foglio di excel in successione.
    Grazie sempre per la tua attenzione



  • di lepat (utente non iscritto) data: 21/01/2015 18:08:13

    questo è quanto fa la mia macro, l'hai provata ?



  • di lepat (utente non iscritto) data: 21/01/2015 18:10:32

    il risultato non progressivo, appare tutto insieme per evitare lo sfarfallio



  • di lepat (utente non iscritto) data: 21/01/2015 20:24:52

    se vuoi vedere il lavoro che scorre elimina o commenta la riga
    Application.ScreenUpdating = False



  • di re.king data: 22/01/2015 09:28:44

    Caro Lepat,

    Ti allego 2 files.
    Il primo chiamato "risultato ottenuto" è quanto restituisce la tua macro.
    Il secondo file chiamato "come dovrebbe essere" è invece quanto a me necessita.

    Ti ringrazio tanto



  • di lepat (utente non iscritto) data: 22/01/2015 10:21:02

    non so che dirti, il risultato che ottengo è quello allegato cattura.jpg (avendo un solo file l'ho ricopiato piu volte)



  • di lepat (utente non iscritto) data: 22/01/2015 10:43:22

    forse dipede dal fatto che uso il 2010, prova questa
     
    Sub importafolder2()
      Dim DestinationSheet As Worksheet
      Dim CSVfolder As String
      Dim CSVfile As String
      CSVfolder = "c:historicaldata"
      Set DestinationSheet = Worksheets(1)
    '  Application.ScreenUpdating = False
      If Right(CSVfolder, 1) <> "" Then CSVfolder = CSVfolder & ""
      CSVfile = Dir(CSVfolder & "*.csv")
      linenumber = 0
      While CSVfile <> ""
        elementnumber = 0
        Open CSVfolder & CSVfile 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
               DestinationSheet.Cells(linenumber, elementnumber).Value = element
           Next
        Loop
        Close #1 ' Close file.
        Stop
        CSVfile = Dir()
      Wend
      Set DestinationSheet = Nothing
      Application.ScreenUpdating = True
    End Sub
    



  • di re.king data: 23/01/2015 09:31:56

    Caro Lepat,

    la nuova macro mi da l'errore in allegato.

    Grazie sempre tante



  • di lepat (utente non iscritto) data: 23/01/2015 12:50:34

    hai aggiunto in testa option explicit, in tal caso devi dichiarare tutte le variabili, altrimenti togli option explicit