Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

aiuto per manipolare un txt

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

aiuto per manipolare un txt

Postdi jackis » 24/07/11 03:17

Ciao a tutti ragazzi,
mi occupo principalmete di finanza, ho a che fare con dati dei mercati finanziari che mi arrivano quotidianamente in file di testo txt al quale ho la necessità di manipolare.
mi scoccia chiedere a voi che magari sarete impegnati ma purtroppo le mie conoscenze su questi argomenti sono a zero e senza un aiuto sono spacciato.
Ringrazio anticipatamente per la buona volontà.

provo a illustrare la composizione del file che ricevo quotidianamente:
esso è composto da svariate righe (circa 500),
ogni riga corrisponde alla quotazione di uno specifico strumento finanziario esattamente così:

CLU2011,d,07/22/11,99.2,100.19,98.43,99.87,293973,381714
CLV2011,d,07/22/11,99.43,100.5,98.76,100.2,74570,93310
LCG2012,d,07/22/11,122.05,123.15,121.675,122.6,3131,28894
LCJ2012,d,07/22/11,124.25,124.9,123.5,124.375,914,16273

quello che mi occorrerebbe è per ogni riga estrarre il contenuto e portrarlo su un altro txt che avrà il nome del primo valore CLU2011.tx in modo tale che alla fine avrò tanti txt quante righe sono,
però a questo punto ho diviso ogni singolo strumento così che ogni giorno io possa aggiornarlo con la nuova quotazione che arriva con il solito txt e ottenere un data base di ogni singolo strumento finanziario.
alla fine il nuovo file dovrebbe venire così:

CLU2011,d,07/22/11,99.2,100.19,98.43,99.87,293973,381714
CLU2011,d,07/23/11,99.2,100.19,98.43,99.87,293973,381714
CLU2011,d,07/24/11,99.2,100.19,98.43,99.87,293973,381714

spero di esser stato abbastanza chiaro...

Credo ci sia modo di far questa cosa ma non ho la + pallida idea su come farla
Ho visto i vostri lavori su questo forume e credo di esser nella comunità giusta per rivolgermi a qualcuno esperto che possa crearmi qualche programmino per questa cosa
ovviamente se ha un prezzo ditemelo, oppure se a qualcuno interessa sono a disposizione per offrire assitenza sui mercati finanziari.

grazie infinite
jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Sponsor
 

Re: aiuto per manipolare un txt

Postdi Flash30005 » 24/07/11 10:05

In un modulo inserisci questa macro
Provvede a creare direttamente i file testo in una directory annuale (es. 2011) dove troverai in ogni file testo quello da te richiesto in un unico passaggio ;)

Codice: Seleziona tutto
Sub ImpEspTxt()
Perc = Application.ThisWorkbook.Path & "\"
FileOr = "Borsa.txt"
Open Perc & FileOr For Input As #1
Do Until EOF(1)
     Line Input #1, Riga
        Anno = "20" & Mid(Riga, 17, 2)
        File = Mid(Riga, 1, 7) & ".txt"
        If Dir(Perc & Anno, vbDirectory) = "" Then MkDir Perc & Anno
            Open Perc & Anno & "\" & File For Append As #2
            Print #2, Riga
            Close #2
Loop
Close #1
Msgbox " Elaborazione Avvenuta"
End Sub

Con un pulsante in qualsiasi foglio avvii la macro
Devi solo inserire nella stessa cartella di lavoro il file .txt originale e chiamarlo Borsa.txt
oppure se hai già un nome sostituisci la variabile
FileOr = "NomeTuoFile.txt"

Se ti funziona come desideri si può implementare
cancellando o spostando il file in una seconda directory es "Archivio" per evitare di trascrivere più volte lo stesso file origine dati

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 24/07/11 20:45

Ciao Flash,
ho seguito alla lettera ciò che mi scrivi (spero di nn aver fatto qualche stupidaggine)
il risultato è questo
http://imageshack.us/photo/my-images/34/catturank.jpg/
cosa mi consigli?

jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 24/07/11 22:47

mi devi dire se hai salvato il file excel in una cartella qualsiasi dando anche un nome al file
e inoltre che non esistano altri moduli di excel perché se hai inserito in
public option explicit
devi dichiarare la variabile Perc come stringa all'inizio dell macro
Codice: Seleziona tutto
Dim Perc as string


Fai sapere
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 24/07/11 23:31

ho creato un file calc (open office non excel) dove ho inserito la macro (spero senza aver fatto cavolate...è la prima volta che lo faccio) a questo file calc NON ho dato un nome specifico

ho creato una nuova cartella sul desktop lasciandola senza nome
all'interno ho messo il txt da elaborare nominandolo come tu suggerisci Borsa.txt e il file calc con la macro


e inoltre che non esistano altri moduli di excel perché se hai inserito in
public option explicit
devi dichiarare la variabile Perc come stringa all'inizio dell macro

questo non so proprio cosa significa :-(

jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 24/07/11 23:39

Non ho esperienza di Open Calc
ma è bene che tu dichiari
la variabile Perc come indicato
all'inizio della macro
ma penso che il problema sia la sintassi di
Codice: Seleziona tutto
Application.ThisWorkbook.Path

diversa tra Open calc ed excel

dovresti trovare la corrispondenza di questa funzione su Open calc
altrimenti inserisci su perc
un percorso fisso e standard come ad esempio
"C:\Temp"
quindi inserirai il file Borsa.txt in C:\Temp
e perc sarà
Perc = "C:\Temp\"

il resto della macro lascialo invariato e prova

fai sapere se si presentano errori e dove

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 25/07/11 00:49

hai ragione il problema è proprio dove dici tu
ho provato a cercare nel manuale di open office ma non menziona tale funzione,
ma ho risolto facendo puntare direttamente una specifica cartella come tu suggerisci
non ho messo c:temp, ma la cartella creata per questo scopo nel desktop e funziona bene

Allora ti dico che sembra funzionare tutto molto bene
i vari txt vengono copilati perfettamente
unica rogna (se vogliamo chiamarla così) ogni giorno devo rinominare il file che ricevo in Borsa.txt
a tal proposito ti chiedo questa cosa:
dato che ricevo ogni giorno un txt nominato con la data del giorno in questione e cioè:
07211.txt
07221.txt
07231.txt .....
mese, giorno, anno(solo ultima cifra)
si potrebbe far in modo di non rinominare sempre i file e farli riconoscere tramite la data????

Altra piccola cosa che ho notato
quando l'elaborazione è conclusa nella cartella di destinazione trovi sviluppate 2 cartelle
una chiamata 2011 dove dentro ci sono 703 file txt
una seconda chiamata 201 dove dentro trovo 54 file txt
che per caso questo processo ha un limite di 703 righe???
perchè non mi mette tutti e 757 (703+54) file txt nella cartella 2011????

Poi infine per l'archiviazione del file elaborato ho pensato se possibile
alla fine di tutti i procedimenti farlo mettere in una directory prestabilita nominato con la data del giorno in questione

ti ringrazio molto

jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 25/07/11 01:46

Avevo previsto il discorso dei file processati pertanto ho già pronta la macro che sposta i file in una directory denominata "Archivio"
devi solo apportare le modifiche per adattarla a Openoffice come hai già fatto per la precedente
Codice: Seleziona tutto
Sub ImpEspTxt()
Perc = Application.ThisWorkbook.Path & "\"
FileOr = "Borsa.txt"
If Dir(Perc & "Archivio", vbDirectory) = "" Then MkDir Perc & "Archivio"
If Dir(Perc & FileOr, vbFile) = "" Then
MsgBox "Non ci sono File da elaborare"
Exit Sub
End If
Open Perc & FileOr For Input As #1
Do Until EOF(1)
     Line Input #1, Riga
        Anno = "20" & Mid(Riga, 17, 2)
        File = Mid(Riga, 1, 7) & ".txt"
        If Dir(Perc & Anno, vbDirectory) = "" Then MkDir Perc & Anno
            Open Perc & Anno & "\" & File For Append As #2
            Print #2, Riga
            Close #2
Loop
Close #1
FileArch = Mid(Date, 7, 4) & Mid(Date, 4, 2) & Mid(Date, 1, 2) & ".txt"
OldName = Perc & FileOr: NewName = Perc & "Archivio\" & FileArch
Name OldName As NewName
MsgBox "File Elaborato"
End Sub

Il problema della troncatura dell'anno dipende dal fatto che le righe nel file origine non presenta la data alla stessa distanza, cerco di spiegarmi l'anno lo ricavo da questo codice che trovi nella macro
Codice: Seleziona tutto
        Anno = "20" & Mid(Riga, 17, 2)

ma se esiste un carattere in più o in meno prima della data esistente del file avrai i problemi da te descritti
Però potresti modificare in questa maniera
Codice: Seleziona tutto
         Anno = "20" & Mid(Riga, 17, 3)
        Anno = Replace(Anno, ",", "")


Altrimenti pubblica la riga scritta in uno dei 54 file nella directory 201
perché il problema è proprio in quei 54 file che hanno una struttura diversa dagli altri

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 25/07/11 02:30

ciao,
per l'archiviazione devo per forza creare un altra macro?
non si può far fare tutto ad una? in modo che abbrevio i passaggi da fare..

Ho apportato le modifiche da te consigliate il risultato è stato che ho ho ben 5 cartelle
2010
2011
2016
2017
2018
mi sembra peggio così....

in effetti ancora una voltra hai ragione la struttura delle righe su quei 54 file è diversa
ti faccio un copiaincolla x capire

(senza la modifica del replace) nella cartella 2011 tutti i file si presentano con questa struttura:
BOV2011,d,07/21/11,57.49,57.5,56.85,56.9,2532,18916

mentre invece nella cartella 201 hanno quest'altra struttura:
CZ2012,d,07/21/11,612,613.25,611,613,6264,68672

ciao
jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 25/07/11 09:16

Come immaginavo...
ci lavorerò su per evitare che succeda questo
a presto!
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi Flash30005 » 25/07/11 09:31

Ok
Allora usa questa macro modificata che non creerà più quel tipo di errore
Codice: Seleziona tutto
Sub ImpEspTxt()
'Perc = Application.ThisWorkbook.Path & "\"
Perc = "C:\Temp\"   '<<<<<<<<<< inserisci il tuo percorso fisso che contiene il file Borsa.txt (e cartelle anno)
FileOr = "Borsa.txt"
If Dir(Perc & "Archivio", vbDirectory) = "" Then MkDir Perc & "Archivio"
If Dir(Perc & FileOr, vbFile) = "" Then
MsgBox "Non ci sono File da elaborare"
Exit Sub
End If
Open Perc & FileOr For Input As #1
Do Until EOF(1)
CV = 0
     Line Input #1, Riga
     For Virg = 1 To Len(Riga)
     If Mid(Riga, Virg, 1) = "," Then CV = CV + 1
     If CV = 2 Then
     AnnoEff = Mid(Riga, Virg + 7, 2)
     GoTo SaltaVirg
     End If
     Next
SaltaVirg:
        Anno = "20" & AnnoEff
        File = Mid(Riga, 1, 7) & ".txt"
        File = Replace(File, ",", "")
        If Dir(Perc & Anno, vbDirectory) = "" Then MkDir Perc & Anno
            Open Perc & Anno & "\" & File For Append As #2
            Print #2, Riga
            Close #2
Loop
Close #1
FileArch = Mid(Date, 7, 4) & Mid(Date, 4, 2) & Mid(Date, 1, 2) & ".txt"
OldName = Perc & FileOr: NewName = Perc & "Archivio\" & FileArch
Name OldName As NewName
MsgBox "File Elaborato"
End Sub


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 25/07/11 18:16

Flash tutto funziona alla perfezione ora!!! ;)

Ti riporto solo un piccolo dettaglio
ho fatto caso che se mi sbaglio e faccio rielaborare un txt già fatto
mi viene aggiunta cmq un altra riga sui vari txt che in questo caso sarebbe un doppione
ti riporto un esempio:

ADH2012,d,07/21/11,0,1.0532,1.0434,1.0532,0,2
ADH2012,d,07/21/11,0,1.0532,1.0434,1.0532,0,2
ADH2012,d,07/22/11,0,1.055,1.0532,1.055,2,2

non è che sia un vero e proprio problema basta solo star attento con le cose fatte e quelle da fare...
ma se si potesse risolvere anche questa casistica sarebbe il massimo.

Per il resto ti sono infinitamente grato per il lavoro svolto preciso e veloce
se dovessi aver bisogno di un aiuto sui mkt finanziari non esitare a domandare.

ciao
jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi jackis » 25/07/11 18:47

altra piccola cosa
è possibile far in modo che mi venga creata un unica cartella con i file txt elaborati?
magari chiamiamola Commodities

ora se elaboro file del 2010 viene creata una cartella con nome 2010
se eleboro file del 2011 viene creata una cartella con nome 2011
e così via...
così facendo però di anno in anno non avrò + la continuazione del file elaborato...

ciao jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 25/07/11 23:19

Caspita!
Me lo potevi dire prima!!!
ho fatto un casino per ricavarmi l'anno del dato
ad averlo saputo è sufficiente che tu metta
dove indicato ciò che vuoi
Codice: Seleziona tutto
SaltaVirg:  '<<<< esistente
        Anno = "Commodities"  '<<<< cambiare


e tutto questo codice che riporto non serve più
Codice: Seleziona tutto
     For Virg = 1 To Len(Riga)
     If Mid(Riga, Virg, 1) = "," Then CV = CV + 1
     If CV = 2 Then
     AnnoEff = Mid(Riga, Virg + 7, 2)
     GoTo SaltaVirg
     End If
     Next
SaltaVirg:


Inoltre non capisco il discorso delle righe doppie
ma se il file Borsa.txt
una volta elaborato viene spostato nella cartella Archivio con la data dell'elaborazione
come fai a riprendere lo stesso file?
Tu stesso hai detto che fai quell'operazione una volta al giorno
quindi presumo che i file cambino da un giorno all'altro, o no?
E' chiaro che se rinomini in Borsa.txt il file appena elaborato e lo sposti nella cartella origine
riesegui la macro ottieni i doppioni
ma tutto ciò lo devi fare manualmente e volutamente
Altrimenti mi devi dare un indizio per capire che il file sia stato elaborato
Oppure vorresti che, ogni volta che esegui il processo, la macro controlli ogni riga dei file elaborati
per controllare se la riga esiste?

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 25/07/11 23:48

scusami ma sinceramente non conoscendo la materia mi resta difficile capire al volo certe cose... :cry:

con la correzione che mi hai suggerito di fare mi veniva creata una cartella di nome 20
ho cancellato anche la riga + in basso che evidenzio (forse ti è sfuggita) e ora mi crea correttamente la cartella voluta COMMODITIES
ho fatto bene?

For Virg = 1 To Len(Riga)
If Mid(Riga, Virg, 1) = "," Then CV = CV + 1
If CV = 2 Then
AnnoEff = Mid(Riga, Virg + 7, 2)
GoTo SaltaVirg
End If
Next
SaltaVirg:
Anno = "20" & AnnoEff

Oppure vorresti che, ogni volta che esegui il processo, la macro controlli ogni riga dei file elaborati
per controllare se la riga esiste?


esatto questo sarebbe l'ideale!
se la riga con tutti i suoi dati già esiste non deve far nulla.

ciao
jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 26/07/11 00:05

Non hai seguito quanto proposto
la prima modifica da fare era proprio questa (rileggi il post precedente)
Da
Codice: Seleziona tutto
Anno = "20" & AnnoEff

a
Codice: Seleziona tutto
Anno = "COMMODITIES"

ed eliminare le righe riportate dopo
in pratica Anno che era una variabile ricercata nel file ora diventa una costante
"Commodies"
quindi non servono più le righe che ricercavano l'anno nel record del file testo
tu hai solo tolto le righe di ricerca hanno e hai lasciato
Anno = Anno = "20" & AnnoEff
essendo AnnoEff nullo perché i codici che ricercavano AnnoEff non esistono più
avrai sempre e solo una cartella Anno = a 20

E chiaro ora il concetto?

Invece a proposito di...
jackis ha scritto:....
esatto questo sarebbe l'ideale!
se la riga con tutti i suoi dati già esiste non deve far nulla.


Ma non mi hai spiegato come può succedere che rielabori sempre lo stesso file quando la macro una volta elaborato lo sposta e rinomina

Capisco che c'è sempre un motivo ma non è spiegato da te,
ossia hai detto che elabori una volta al giorno un file che si aggiorna in queste 24 ore
quindi non sarà mai lo stesso
a meno che non ci giochi con questa macro :eeh:

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 26/07/11 01:18

chiarissimo!!!
corretto tutto come da ultima descrizione.

Mentre per quello che tu mi chiedi a proposito della spiegazione è motlo semplice
ho circa 1 anno di file da elaborare con la macro che mi hai creato
devo scaricarli dal sito,
rinominarli in borsa.txt,
infine processarli,
potrebbe succedere (visto il rincoglionimento che avanza :oops: ) che x errore processi un file già fatto con il risultato della doppia riga...
ovviamente può anche succedere che dimentichi di processare un dato file, ma x questo sono attrezzato e cioè nel programma di grafica che uso mi segnala se manca un giorno...

Possiamo anche lasciare così il codice, cercherò di stare attento nel lavoro organizzandomi nel migliore dei modi.

Però ho un altro problema ben + grave da risolvere mi sono accorto solo ora!!!
Il programma di grafica che uso non accetta la composizione dei dati elaborati,
bisogna togliere i primi due valori e partire direttamnete dalla data, ti faccio un esempio:

ora abbiamo il seguente file elaborato:

ADH2012,d,07/22/11,0,1.055,1.0532,1.055,2,2

mi servirebbe invece che venisse fuori così:

07/22/11,0,1.055,1.0532,1.055,2,2

poi "credo" che non manchi + nulla :!:

Buonanotte
jackis
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 26/07/11 07:37

Per l'ultimo quesito
pensa alle righe che ti ho fatto togliere
a cosa servivano?
a trovare la seconda riga e poi a ricavarsi l'anno (che ora non serve più)
ma se invece dell'anno prelevi la riga rimanente?
avrai la stringa troncata come richiedi

per il primo quesito
potrei evitare di farti fare il lavoro a mano creandoti un'apposita macro
però mi occorre sapere:
1) l'effettivo percorso dei file origine (i file di un anno)
2) il loro nome
3) nella cartella che li contiene essi sono messi in ordine cronologico?
e quanto altro mi possa aiutare per creare una macro ad hoc
magari dicendomi come fai a scegliere tu stesso il file da processare tra oltre 300 file?
Altrimenti ti dò io stesso una dritta per eseguire manualmente senza possibilità di errore
copi la cartella dei file originali chiamndola cartellaOriginale con tutti i file che hai ora
poi dalla cartella1 non devi copiare il file e rinominarlo Borsa.txt
ma toglierlo da quella cartella con la funzione taglia e incolla nella cartella di processo e in questa cartella lo rinomini
in questa maniera stai sicuro che malgrado la "disattenzione" non potrai mai prendere sempre lo stesso file perché non esiste più
in quanto tolto ;)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: aiuto per manipolare un txt

Postdi jackis » 26/07/11 11:31

lascaiamo stare la nuova macro...farò come suggerito o in altra maniera (vedrò al momento)

mentre mi hai dato un indizio per farmi capire cosa fare per la troncatura della riga
ma sinceramente non è sufficiente..vediamo se ho capito
rimetto il pezzo di codice tolto in precedenza facendo la seguente modifica:

For Virg = 1 To Len(Riga)
If Mid(Riga, Virg, 1) = "," Then CV = CV + 1
If CV = 2 Then
Mid(Riga, Virg + 7, 2)
GoTo SaltaVirg
End If
Next
SaltaVirg: Anno = "Commodities"

può andare??

Ora non ho il pc con il materiale in questione sotto mano...stasera farò questa prova.

ciao
jackis
Utente Junior
 
Post: 16
Iscritto il: 08/02/05 18:29

Re: aiuto per manipolare un txt

Postdi Flash30005 » 26/07/11 12:53

Allora il codice originale era
Codice: Seleziona tutto
     For Virg = 1 To Len(Riga)   '<<<< qui la variabile Virg aumenta di un carattere ad ogni ciclo
     If Mid(Riga, Virg, 1) = ","  Then CV = CV + 1   '<<<< qui se il carattere in esame (lunghezza 1) è uguale a "," (carattere virgola) la variabile CV aumenta di 1
     If CV = 2 Then                    '<<<<< qui se CV = 2 (quindi sono state trovate due virgole)
     AnnoEff = Mid(Riga, Virg + 7, 2)  ' <<< prendiamo il settimo carattere (con lunghezza 2) dopo la virgola
     GoTo SaltaVirg '<<< qui c'è un salto del for next per proseguire con il resto della macro
     End If   '<<<< fine condizione
     Next  '<<<< procedi con un altro carattere della stringa riga
SaltaVirg:  '<<<< etichetta del Goto, lasciare qui
Anno = "Commodities"  '<<<< lasciare qui


Quindi non essendo più necessario AnnoEff ma vogliamo il resto della stringa dopo la seconda virgola
Chiamiamo la variabile, invece di AnnoEff, StringaEff (può essere chiamata anche Pippo)
Codice: Seleziona tutto
StringaEff = Mid(Riga, Virg + 1, Len(riga))

Cosa significa?
Che la stringa effettiva StringaEff è la stringa dalla seconda virgola più un carattere per la lunghezza della stringa riga (qui si potrebbero detrarre n caratteri ma è inutile in questo caso)
Ora però nel file destinazione non dobbiamo più scrivere l'intera stringa Riga ma la stringa effettiva
quindi bisogna cambiare il codice del Print #2
Codice: Seleziona tutto
            Open Perc & Anno & "\" & File For Append As #2  '<<<<< esistente lasciare così
            Print #2, StringaEff   '<<<< canbiare così
            Close #2          '<<<<< esistente lasciare così


E tutto chiaro?
Funziona?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "aiuto per manipolare un txt":

Aiuto urgente!!!
Autore: templare77
Forum: Software Windows
Risposte: 0

Chi c’è in linea

Visitano il forum: CANAPONE e 17 ospiti