Condividi:        

[Excel] Da Cvs a Excel.

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Da Cvs a Excel.

Postdi Andromeda59 » 17/06/14 10:38

Buongiorno,
girovagando per i forum ho trovato questa macro(vedi allegato)che funziona, solo che avrei necessita di perfezionarla un pochino.
Giornalmente mi arrivano delle liste nominativi in formato csv, (ha volte queste liste hanno più di 8000 nominativi) che man mano che arrivano li inserisco nella cartella "Prova" ed eseguendo la macro che si trova su "filecsvinfogli", li passa sui vari fogli excel.
Chiedo, nei limiti del possibile, una macro di "riepilogo" ossia, su un foglio dello stesso file rinominato "riepilogo" la macro,"prendesse" i nominativi dei vari fogli e me li accodasse sul foglio "riepilogo",naturalmente solo le colonne con i dati che effettivamente mi interessano:A;B;D;E;F;G;I.
Non so se sono stato chiaro.
Ringrazio anticipatamente per l'aiuto.
http://www.filedropper.com/filecsvinfogli
====
Andromeda
Windows 8.1 - Excel 2013
Avatar utente
Andromeda59
Utente Junior
 
Post: 13
Iscritto il: 11/06/14 19:46
Località: Italy

Sponsor
 

Re: [Excel] Da Cvs a Excel.

Postdi Andromeda59 » 17/06/14 16:51

Qualche anima Pia disposta ad aiutarmi.
Grazie. :cry:
====
Andromeda
Windows 8.1 - Excel 2013
Avatar utente
Andromeda59
Utente Junior
 
Post: 13
Iscritto il: 11/06/14 19:46
Località: Italy

Re: [Excel] Da Cvs a Excel.

Postdi Anthony47 » 17/06/14 19:39

Nell tua Sub m(), dopo la query, tra End If e Next, aggiungi queste istruzioni:
Codice: Seleziona tutto
Range("A1").Select
Application.Intersect(Range("A:A, B:B, D:D,F:F,G:G, I:I"), _
    Range(Selection, ActiveCell.SpecialCells(xlLastCell))).Copy _
    Destination:=Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Accoderai cosi' quanto appena importato al contenuto del foglio Riepilogo (che deve gia' esistere).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Da Cvs a Excel.

Postdi Andromeda59 » 19/06/14 08:51

Ciao Anthony, la macro funziona solo che in fase di accodamento mi ripete l'intestazione della prima riga per ogni cvs nuovo.
E' possibile evitarlo.
Grazie.
http://postimg.org/image/pfpa3wuzv/
====
Andromeda
Windows 8.1 - Excel 2013
Avatar utente
Andromeda59
Utente Junior
 
Post: 13
Iscritto il: 11/06/14 19:46
Località: Italy

Re: [Excel] Da Cvs a Excel.

Postdi Anthony47 » 19/06/14 14:52

Cosi' la prossima volta impari a pubblicare formati piu' veritieri...
Comunque ti bastera' modificare la parte Application.Intersect(Range("A:A, B:B, D:D,F:F,G:G, I:I") in Application.Intersect(Range("A2:A20000, B2:B20000, etc etc")

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Da Cvs a Excel.

Postdi Andromeda59 » 22/12/14 12:53

Ciao Anthony47, in riferimento ai suddetti post, volevo chiederti s'è possibile inserire nella macro un'istruzione che aggiornasse solo i dati non presenti.
Grazie.
====
Andromeda
Windows 8.1 - Excel 2013
Avatar utente
Andromeda59
Utente Junior
 
Post: 13
Iscritto il: 11/06/14 19:46
Località: Italy

Re: [Excel] Da Cvs a Excel.

Postdi Anthony47 » 23/12/14 00:43

Partendo dal fatto che il file postato a giugno non e' piu' disponibile se non spieghi completamente quello che serve non andiamo da nessuna parte...

Ti aspettiamo, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Da Cvs a Excel.

Postdi Andromeda59 » 23/12/14 09:54

Buongiorno Anthony47,
hai ragione, non sapevo che il file venisse cancellato.
Uso questa macro che tu hai "perfezionato" e funziona benissimo:
Option Explicit

Public Sub m()

On Error GoTo RigaErrore

Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim sPath As String

With Application
.ScreenUpdating = False
End With

sPath = ThisWorkbook.Path & "\Prova\"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(sPath)


For Each objFile In objFolder.Files
If Right(objFile.Name, 3) = "csv" Then
ThisWorkbook.Worksheets.Add
ActiveSheet.Name = objFile.Name

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sPath & objFile.Name, _
Destination:=Range("A1"))
.Name = "Cartel2"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1250
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True '<<===Delimitatore
.TextFileCommaDelimiter = True '<<===Delimitatore
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1) '<<=== Numero colonne da modificare
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
Range("A1").Select
Application.Intersect(Range("D2:D20000, F2:F20000, G2:G20000, H2:H20000, I2:I20000, J2:J20000, K2:K20000, AJ2:AJ20000, AK2:AK20000"), _
Range(Selection, ActiveCell.SpecialCells(xlLastCell))).Copy _
Destination:=Sheets("Riepilogo").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Next

RigaChiusura:
Set objFile = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
With Application
.ScreenUpdating = True
End With
Exit Sub

RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura

End Sub

Vorrei sapere se è possibile aggiungere un istruzione che man mano che arrivano questi dati in CSV nel foglio "riepilogo" mi vengano aggiornati i dati secondo le date e aggiunti i dati non presenti.
Pensi sia possibile.
Grazie
====
Andromeda
Windows 8.1 - Excel 2013
Avatar utente
Andromeda59
Utente Junior
 
Post: 13
Iscritto il: 11/06/14 19:46
Località: Italy

Re: [Excel] Da Cvs a Excel.

Postdi Anthony47 » 24/12/14 20:08

Non esiste una istruzione magica che "man mano che arrivano questi dati in CSV nel foglio "riepilogo" mi vengano aggiornati i dati secondo le date e aggiunti i dati non presenti"
Comunque secondo me la cosa piu' efficace e' che sul contenuto di Riepilogo crei una tabella pivot.
Se non riesci a sviluppare questo suggerimento allora riallega un file di esempio e vedremo meglio.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Da Cvs a Excel.

Postdi Andromeda59 » 28/12/14 11:48

Grazie Anthony47 e auguri di Natale passato.
Al momento proverò con una Pivot come tu hai suggerito.
In caso ci risentiremo più in là.
Al momento grazie per la tua disponibilità e auguri di buon anno.
====
Andromeda
Windows 8.1 - Excel 2013
Avatar utente
Andromeda59
Utente Junior
 
Post: 13
Iscritto il: 11/06/14 19:46
Località: Italy


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Da Cvs a Excel.":


Chi c’è in linea

Visitano il forum: Nessuno e 69 ospiti