Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Elabora file .txt correttamente

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

Elabora file .txt correttamente

Postdi serra » 13/08/18 15:38

Salve, praticamente devo elaborare parecchi storici dati contenuti nella stessa cartella in formato .TXT (è corretto in maiuscolo, essendo file ASCII e non semplice file .txt), la macro che ho scritto funziona bene, apre tutti i file della cartella e uno per volta elimina la prima riga (unica modifica che devo fare) e poi salvarli e chiuderli. Se lo faccio manualmente tramite excel il risultato è perfetto ma molto lungo ovviamente, con la macro invece ho il problema che pur modificando i file nella stessa maniera, e salvandoli nello stesso modo e formato, quando vado ad aprirli con un editor di testa, vengono aggiunte a inizio e fine riga queste virgolette " .... " che rendono poi i dati illeggibili al programma. Come mai questa differenza secondo voi? Come posso risolvere questo problema?

Codice: Seleziona tutto
Sub ELABORAFILE()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim wk As Workbook
    Dim s As String
           
    'metto un riferimento alla cartella in cui si trovano i files
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Users\Serra\Documents\ASCIITRADESTATION")
 
    'ciclo gli oggetti file della cartella
    For Each objFile In objFolder.Files
       
        'imposto a "" la variabile s
        s = ""
        'metto in s gli ultimi 4 caratteri del nome del file che sto ciclando
        s = Right(objFile.Name, 4)
       
        Select Case s
            'se s è uguale ad una delle seguenti stringhe
            Case ".TXT"
                'metto un riferimento al file che sto aprendo
                '(il file ciclato)
                Set wk = Workbooks.Open(objFile.Path)
                Rows("1:1").Select
                Selection.Delete Shift:=xlUp
                'chiudo il file ciclato
                wk.Close SaveChanges = True
                'Set a Nothing della variabile oggetto
                Set wk = Nothing
        End Select
       
    Next
   
           
    'Set a Nothing delle variabili oggetto
    Set shMe = Nothing
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
       
End Sub
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37

Sponsor
 

Re: Elabora file .txt correttamente

Postdi Anthony47 » 13/08/18 23:14

Non so perche' inserisce quell'indicazione, comunquue suggerisco di non usare Excel ma di lavorare direttamente sul file txt.
Se alleghi un paio di file dimostrativi possiamo fare delle proposte. Posso anche chiederti perche' hai bisogno di eliminare la prima riga?
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17166
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elabora file .txt correttamente

Postdi serra » 13/08/18 23:47

Praticamente i file sono dati storici di borsa, lunghi anche 15 anni o più
Devo eliminare la prima riga perchè la inserisce il fornitore dati, ma non è riconosciuta dal programma in cui vado ad analizzare questi storici, solo che posso trovarmi a analizzare storici anche di 100 strumenti e di dover creare più di un file per strumento, quindi una lavorata immensa fare tutto a mano.
Ecco qua prima e dopo (file originale nella cartella indicata, e risultato dopo aver eseguito la macro)
http://www.filedropper.com/archive_30
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37

Re: Elabora file .txt correttamente

Postdi Anthony47 » 16/08/18 19:12

Allora, ho sostituito nella tua macro la parte centrale, quella che elaborava tramite Excel il contenuto del file, in modo da lavorare direttamente sui file testo. Il nuovo codice:
Codice: Seleziona tutto
Sub ELABORAFILE2()
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
'    Dim wk As Workbook
    Dim s As String
    Dim myFile As Object, myLines, I As Long
           
    'metto un riferimento alla cartella in cui si trovano i files
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\Users\Serra\Documents\ASCIITRADESTATION")   
'
    'ciclo gli oggetti file della cartella
    For Each objFile In objFolder.Files
        'imposto a "" la variabile s
        s = ""
        'metto in s gli ultimi 4 caratteri del nome del file che sto ciclando
        s = Right(objFile.Name, 4)
        Select Case s
            'se s è uguale ad una delle seguenti stringhe
            Case ".TXT"
                'objfile.OpenTextFile(strFileName, 1)
                'Leggi il file:
                Set myFile = objFSO.OpenTextFile(objFile.Name, 1)   'lettura
                strContents = myFile.ReadAll
                myFile.Close
                'Split in records:
                myLines = Split(strContents, vbNewLine)
                'Apre in scrittura e scrive dal secondo record:
                Set objFile = objFSO.OpenTextFile(objFile.Name, 2)  'scrittura
                For I = 0 To UBound(myLines)
                   If I > 0 Then
                      objFile.WriteLine myLines(I)
                   End If
                Next I
        End Select
    Next
    'Set a Nothing delle variabili oggetto
''    Set shMe = Nothing
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
End Sub

Come nella tua macro, di cui ho mantenuto l'impostazione di massima, vengono cercati nella directory specificata i file con estensione ".TXT" e viene eliminato (nella fase di scrittura) il record iniziale. Excel quindi viene usato solo come contenitore della macro.

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17166
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Elabora file .txt correttamente

Postdi serra » 17/08/18 15:43

Mi segnala errore (impossibile trovare file) in questa riga
Codice: Seleziona tutto
 Set myFile = objFSO.OpenTextFile(objFile.Name, 1)
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37

Re: Elabora file .txt correttamente

Postdi Anthony47 » 17/08/18 17:41

Hummm...
Modifica la parte centrale della macro come segue:
Codice: Seleziona tutto
        Select Case s
            'se s è uguale ad una delle seguenti stringhe
            Case ".TXT"
                'objfile.OpenTextFile(strFileName, 1)
                'Leggi il file:
                Set myFile = objFSO.OpenTextFile(objFolder.Path & "\" & objFile.Name, 1)   'lettura
                strContents = myFile.ReadAll
                myFile.Close
                'Split in records:
                myLines = Split(strContents, vbNewLine)
                'Apre in scrittura e scrive dal secondo record:
                Set objFile = objFSO.OpenTextFile(objFolder.Path & "\" & objFile.Name, 2)  'scrittura
                For I = 0 To UBound(myLines)
                   If I > 0 Then
                      objFile.WriteLine myLines(I)
                   End If
                Next I
        End Select

Le modifiche sono sulle righe di "lettura" e "scrittura"

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

Re: Elabora file .txt correttamente

Postdi serra » 17/08/18 19:19

perfetto, così funziona!! Grazie mille!!
serra
Utente Junior
 
Post: 25
Iscritto il: 11/02/18 09:37


Torna a Applicazioni Office Windows


Topic correlati a "Elabora file .txt correttamente":


Chi c’è in linea

Visitano il forum: Nessuno e 66 ospiti