Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

preleva da file CSV

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

preleva da file CSV

Postdi raimea » 10/04/14 06:26

ciao

tramite macro, vorrei riuscire a prelevare dei dati da un file .CSV
e portarli in excell ben separati in colonne.

quindi ho : un file_a.csv ed un file.b.xls

i dati nel file.a.csv sono scritti tutti nella stessa cella A
e dovrei separarne il contenuto.

cio' che indica dove separare nel file csv, e' la virgola.
x info, nel file A ho scritto manualmente una riga per indicare come dovrebbe essere il risultato.

naturalmente i 2 file saranno nella stessa cartella

provo ad allegare i 2 file

https://db.tt/B9vmxzJq

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: preleva da file CSV

Postdi Anthony47 » 10/04/14 08:05

Ma e' sufficiente fare Menu /Dati /Testo in colonna; non da' il risultato richiesto?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

preleva da file CSV

Postdi raimea » 10/04/14 09:03

ciao
ho provato a fare quanto suggerito,
sembra ok,
ora vedo se riesco ad ottenere il risultato con il registratore macro

x ora grazie

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi raimea » 10/04/14 09:19

Allora con il registratore ho ottenuto questo:
Codice: Seleziona tutto
Sub sistemacolonne()

Range("E7:L200").ClearContents

    Range("E7:E14").Select
    Application.CutCopyMode = False
   
    Selection.TextToColumns Destination:=Range("E7"), DataType:=xlDelimited, _  '<<< si ferma da qui
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
       
    Range("E4").Select
End Sub


ma mi si inchioda :eeh:


ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 10/04/14 13:54

La tua macro mi fa pensare che i dati da separare siano inizialmente in E7:E14.
"Inizialmente", perche' poi vengono subito azzerati dalla prima istruzione della tua macro... Suggerisco di modificare quella istruzione in
Codice: Seleziona tutto
Range("F7:L200").ClearContents

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: preleva da file CSV

Postdi raimea » 10/04/14 20:57

:eeh:
esatto antony...
che ..pirla son stato...
prima cancello i dati poi pretendo di ordinarli
ora procedo con il lavoro
x ora grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

preleva da file CSV

Postdi raimea » 07/12/15 07:56

ciao
ho una macro che mi si e' bloccata , penso a causa
delle modifiche nel foglio .csv , da cui vado a prelevare dati.

la macro prel1betfr in modulo 13
preleva dei dati in un altro file (in stessa cartella), con estensione csv

tali dati li importava e ordinava in fgl betfaire,
ma ora mi si inchioda tutto, e non sono riuscito a sistemare.
penso sia dovuto al fatto che nel file .csv, ci sono 2 date . piazzata e definita
a me serve solo 1na data definita,
quindi andrebbe eliminata la prima data piazzata.

poi il problema si ha quando si lancia in automatico, questa macro:
Codice: Seleziona tutto
Sub adattoprelievo()
Dim aTabella As Variant
Dim nRiga As Long
Dim nCol As Integer
Dim uE As Long

With Foglio33
    uE = .Range("E" & Rows.Count).End(xlUp).Row
    aTabella = .Range("E7:K" & uE)
    For nRiga = LBound(aTabella) To UBound(aTabella)
        aTabella(nRiga, 2) = Mid(aTabella(nRiga, 2), 1, InStr(aTabella(nRiga, 2), "ID") - 2)    ' <---
        For nCol = 5 To 7
            If IsNumeric(Replace(aTabella(nRiga, nCol), " ", ",")) Then
                aTabella(nRiga, nCol) = CDbl(Replace(aTabella(nRiga, nCol), " ", ","))
            End If
        Next nCol
    Next nRiga
    .Range("E7:K" & uE) = aTabella
End With

End Sub


provo ad allegare i 2 file

https://dl.dropboxusercontent.com/u/96374724/preleva.bf.rar

grazie
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 08/12/15 00:06

La macro apre il file AccountStatement_All.csv, che e' un file di testo non ancora "incolonnato" nel foglio Excel; quindi immagino che per prima cosa bisognera' fare un Testo in colonna.
Pero' mi sembra strano che tu non abbia notato questo problema (del mancato Testo in colonna iniziale), perche' le operazioni successive (copia in Sheets("betfaire"), ordinamento, formattazione, Sub adattoprelievo e quant'altro sono basate su un testo incolonnato) insomma non vorrei banalizzare troppo.
Ho quindi registrato una macro che esegue il testo in colonna del foglio su cui viene aperto il file AccountStatement_All.csv; corrisponde a questo codice:
Codice: Seleziona tutto
Sub TTCol()
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Application.DisplayAlerts = False
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 4), Array(2, 4), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1)), TrailingMinusNumbers:=True
Columns("A:A").Select
Application.DisplayAlerts = True
Selection.Delete Shift:=xlToLeft
Range("A1").Select
End Sub

Ho quindi "chiamato" questa macro con la Call TTCol inserita all'interno della tua Sub prel1betfr() in questa posizione:
Codice: Seleziona tutto
Worksheets("AccountStatement_All").Activate   ' <<< il foglio dal quale dove preleva
Call TTCol             'AGGIUNTA, Chiamata alla Sub TestoInColonna
Range("a2:h1000").Copy                 ' il range di righe su cui operare

Questo consente di fare qualche passo in piu', e quindi arrivare in buona salute alla Sub adattoprelievo(), che pero' fallisce nell'istruzione
aTabella(nRiga, 2) = Mid(aTabella(nRiga, 2), 1, InStr(aTabella(nRiga, 2), "ID") - 2)
semplicemente perche' quella istruzione estrae una stringa (funzione Mid) fino alla posizione in cui viene trovata la sottostringa "ID", che in quel csv e' assente, salvo qualche comparsata in parole quali Madrid, Valladolid, Videoton e simili. A sentimento direi che probabilmente stai cercando di recuperare quelli che ora vengono chiamati " Ref: ", ma solo chi ha fatto la macro puo' saperlo.

Insomma devi riesaminare il compito che avevi assegnato a quella macro e trovare un'altra via per ottenere il risultato; a meno che non sia errato il contenuto del file Csv.

Non sapendo come e' stato ottenuto il csv (mi pare la copia parziale di un sorgente html) non so dire di piu'...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: preleva da file CSV

Postdi raimea » 08/12/15 07:43

ciao
ho sistemato e sono avanzato nella sistemazione.

La macro apre il file AccountStatement_All.csv, che e' un file di testo non ancora "incolonnato" nel foglio Excel; quindi immagino che per prima cosa bisognera' fare un Testo in colonna.

confermo , fatto , ok

A sentimento direi che probabilmente stai cercando di recuperare quelli che ora vengono chiamati " Ref: ",

confermo , sistemato scrivendo Ref
Non sapendo come e' stato ottenuto il csv (mi pare la copia parziale di un sorgente html)

il file l'ho ottenuto facendo l'estratto delle mie giocate, dal mio conto betfire.it
e' quello che e' modificato rispetto a quando la macro andava correttamente.

ora il file procede con ancora alcune cose da sistemare:
viene scritta la data 2 volte a me serve solo 1na da mettere in col E
ei indifferente quale eliminare.

poi mi si blocca qui:
Codice: Seleziona tutto
'----sommo x col M--------------------------------

'UR = Worksheets("betfaire").Range("e" & Rows.Count).End(xlUp).Row  'e  le date

Worksheets("betfaire").Range("m7:m1000").ClearContents  'm dove metto totale

DataM = Day(Worksheets("betfaire").Range("e7").Value)
MDataM = Day(Worksheets("betfaire").Range("e7").Value)

Somma = 0

For RR = 7 To ur + 1
DataM = Day(Worksheets("betfaire").Range("e" & RR).Value)

If MDataM = DataM Then
    Somma = Somma + Worksheets("betfaire").Range("k" & RR).Value  'L dove cercare x sommare
Else
Worksheets("betfaire").Range("m" & RR - 1).Value = Somma

MDataM = DataM


tale macro serve a farmi la somma giornaliera di col K
e mettere il risultato in col M all'ultima riga riferita stesso giorno
vi allego il file con le correzzioni gia fatte.

https://dl.dropboxusercontent.com/u/96374724/2-preleva.bf.rar
grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 08/12/15 21:57

Immagino che anche questa sia una novita' nel tracciato record, sta di fatto che in colonna K non ci finiscono solo numeri ma anche stringhe "--", immagino al posto di 0; questo mette "in difficoltà" le istruzioni che sommano Range("k" & RR).Value.
Ho modificato queste istruzioni anteponendole un If; es:
Codice: Seleziona tutto
If IsNumeric(Worksheets("betfaire").Range("k" & RR).Value) Then Somma = Somma + Worksheets("betfaire").Range("k" & RR).Value

Codice: Seleziona tutto
If IsNumeric(Worksheets("betfaire").Range("k" & RR).Value) Then Somma = Worksheets("betfaire").Range("k" & RR).Value


Fai un Cerca di "Somma =" per trovare le 2+2 posizioni dove inserire dette istruzioni.

Dopo questa modifica la macro si e' conclusa col messaggio "Aggiornamento terminato"; che sia terminato bene o terminato male non lo so.

Prova anche tu...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

preleva da file CSV

Postdi raimea » 08/12/15 23:00

quasi ci siamo
ora la macro non ha più dato errori ,
ma attualmente non ha fatto la somme degli importi giornalieri da mettere in col M

ES:
x il giorno 20.11 deve sommare K9+K10 (5,32+6,81) e mettere il risultato della somma in M11
attualmente in M11 ha messo l'ultimo importo che ha trovato.

allego il file modificato

https://dl.dropboxusercontent.com/u/96374724/3-preleva.bf.rar


ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 09/12/15 11:28

Ahh... Dopo 1000 e passa messaggi pensavo di potermi mantenere sul vago!
Dovevi inserire in 2 posti la prima istruzione e in altri 2 posti la seconda; invece ha inserito in 4 posti la coppia di istruzioni.

Cioe' dove c'era Somma = Somma + Worksheets("betfaire").Range("k" & RR).Value (2 posti) metterai
If IsNumeric(Worksheets("betfaire").Range("k" & RR).Value) Then Somma = Somma + Worksheets("betfaire").Range("k" & RR).Value

Dove invece c'era Somma = Worksheets("betfaire").Range("k" & RR).Value (2 altri posti) metterai
If IsNumeric(Worksheets("betfaire").Range("k" & RR).Value) Then Somma = Worksheets("betfaire").Range("k" & RR).Value

Riprendi quindi il file https://dl.dropboxusercontent.com/u/963 ... eva.bf.rar e correggi come appena detto.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: preleva da file CSV

Postdi raimea » 09/12/15 12:17

:undecided: - bene
ora ho sistemato correttamente, ed i conteggi giornalieri tornano

ora se possibile, come ultima cosa vorrei riuscire a togliere l'ultima data
tipo : incontri 21 novembre /
che viene scritta nella descrizione dell incontro in col F

vi allego file modificato

https://dl.dropboxusercontent.com/u/96374724/3-preleva.bf.rar

grazie
ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 09/12/15 23:58

All'interno della Sub adattoprelievo() modifica la parte With Foglio33 /End With:
Codice: Seleziona tutto
With Foglio33
    uE = .Range("E" & Rows.Count).End(xlUp).Row
    aTabella = .Range("E7:K" & uE)
    lb2 = LBound(aTabella, 2)
    For nRiga = LBound(aTabella) To UBound(aTabella)
        If UCase(Left(aTabella(nRiga, lb2 + 1), 8)) = "INCONTRI" Then
            lfslash = InStr(1, aTabella(nRiga, lb2 + 1), "/", vbTextCompare)
            If lfslash > 0 Then
                aTabella(nRiga, lb2 + 1) = Trim(Mid(aTabella(nRiga, lb2 + 1), lfslash + 1, 999))
            End If
        End If
        aTabella(nRiga, 2) = Mid(aTabella(nRiga, 2), 1, InStr(aTabella(nRiga, 2), "Ref") - 2)
        For nCol = 5 To 7
            If IsNumeric(Replace(aTabella(nRiga, nCol), " ", ",")) Then
                aTabella(nRiga, nCol) = CDbl(Replace(aTabella(nRiga, nCol), " ", ","))
            End If
        Next nCol
    Next nRiga
    .Range("E7:K" & uE) = aTabella
End With

E' la penultima richiesta, vero :D :D :?: :?:
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: preleva da file CSV

Postdi raimea » 10/12/15 06:44

ciao
E' la penultima richiesta, vero :D :D :?: :?:


hai ragione..... !
:) :D :lol:

ma...........

e' tutto ok ,
il prelievo e' tornato come era prima
ora leggo "studio", un po le varie correzioni fatte.

grazie di tutta la pazienza

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1101
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "preleva da file CSV":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti