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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
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 :?: :?:
Avatar utente
Anthony47
Moderatore
 
Post: 19196
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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi raimea » 31/01/21 23:42

ciao

ho una macro che mi preleva dei dati da un file .CSV
e' la macro >>> prel1 ma fa i " capricci".

mi importa dei valori in col K7:K con uno spazio davanti
pertanto non posso piu fare operazioni di somma in L5

ho notato che se manualmente tolgo lo spazio davanti al numero
le operazioni vengono svolte.

sono a chiedere se mi dite dove come sistemare.

inoltre nella col F importa il tutto correttamente
ma ora alla fine di ogni riga, mette un lineetta verticale.
vorrei poterla togliere.

vi allego i 2 file

https://www.dropbox.com/s/xy99smdyep8sxrr/somma_ko.rar?dl=0

grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 01/02/21 00:29

Prova aggiungendo questo blocco in questa posizione:
Codice: Seleziona tutto
'            altro codice
ThisWorkbook.Activate                '<<< ESISTENTE
For Each myC In Range(Range("K7"), Range("K7").End(xlDown))
    If Len(myC.Value) > 1 Then
        myC.Value = Val(Trim(myC.Value))
    End If
Next myC

Sheets("betfaire").Select                  '<<< SEGUE CODICE ESISTENTE
Range("e7").Select  ' la cella dove incollare i dati
'            altro codice
'...


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

Re: preleva da file CSV

Postdi raimea » 01/02/21 07:09

ciao

tutto ok la colonna K
sono stati eliminati gli spazi davanti ai numeri ora vengono riconosciuti correttamente


mentre per la col F ?
inoltre nella col F importa il tutto correttamente
ma ora alla fine di ogni riga, mette un lineetta verticale.
vorrei poterla togliere.


anchessa avrebbe dovuto sistemarsi con la modifica sopra ?

perche' al momento la lineetta al termine di ogni riga e' rimasta

grazie
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: preleva da file CSV

Postdi Anthony47 » 01/02/21 15:18

La modifica che ti ho dato riguarda solo colonna F.

Non ho capito il discorso della "lineetta" da togliere; se parli del bordo tratteggiato in blu tra riga 7 e riga 8, quello e' dato da una formattazione esistente che non viene eliminata con la ClearContents iniziale. Se e' stata impostata "a mano" allora toglila e ti troverai bene; se invece viene impostata da altre macro allora potresti registrare una macro mentre fai:
-Copia E8:M8
-Incolla/speciale formato in E9:E1000
-Esc per cancellare il copiato
Poi inserisci Call MacroRegistrata in coda alla modifica del messaggio precedente.

Se invece parli di altre cose allora prova a evidenziarmele con uno screenshot.

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

Re: preleva da file CSV

Postdi raimea » 01/02/21 17:22

ciao
la lineetta a cui mi riferisco in col F
e' quella a fine di ogni descrizione

Immagine

se possibile vorrei toglierla.

grazie

ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "preleva da file CSV":


Chi c’è in linea

Visitano il forum: Nessuno e 62 ospiti