Eliminare rige file TXT



  • Eliminare rige file TXT
    di Fabio (utente non iscritto) data: 16/06/2015 15:54:46

    Buongiorno,
    avendo un file txt con tantissime righe, avrei la necessità di eliminarne un certo numero.
    Ho provato a registrare una macro che mi elimina l'ultimo "blocco" di righe (nel file allegato partendo dalla riga che contiene NXWEB_TITOLO_DETT fino alla fine) ma quando lo vado a salvare mi perde le caratteristiche del file TXT (ad esempio i separatori).
    Allego un file TXT ridotto.
    Come posso modificare il codice per mantenere le caratteristiche del file TXT ?
    Grazie e buona giornata.

     
    Sub Macro1()
        ChDir "D:"
        Workbooks.OpenText Filename:= _
            "D:FILE_RIDOTTO.txt", Origin:= _
            xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
            Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
            TrailingMinusNumbers:=True
        Cells.Find(What:="NXWEB_TITOLO_DETT", After:=ActiveCell, LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Activate
        Range(Selection, Selection.End(xlDown)).Select
        Selection.EntireRow.Delete
        ActiveWorkbook.Save
        ActiveWorkbook.Save
        ActiveWindow.Close
    End Sub



  • di Marius44 data: 16/06/2015 18:04:26

    Non sono molto addentro ai file di testo ma, forse, dovresti aggiungere che tipo di file vuoi salvare al primo ActiveWorkbook.Save, cioè il suffisso ".txt", e poi continuare regolarmente.
    Ciao,
    Mario



  • di Fabio (utente non iscritto) data: 16/06/2015 21:37:19

    Ciao Mario e grazie per la risposta.
    Cortesemente sapresti suggerirmi come scrivere la riga aggiungendo il suffisso?
    Grazie e buona serata.



  • di Marius44 data: 16/06/2015 23:56:51

    Come detto prima, non sono avvezzo ai file ".txt" ma guardando la tua macro avresti potuto arrivarci da solo. Come hai fatto a salvarlo prima come ".txt"? Sempre guardando la tua macro apri il foglio con
    Workbooks.OpenText Filename:= "D:FILE_RIDOTTO.txt" ... ecc, ecc
    Allo stesso modo salvi con:
    ActiveWorkbook.SaveAs Filename:=""D:FILE_RIDOTTO.txt"
    Fai prima delle prove senza arrecar danni.
    Ciao,
    Mario



  • di Marius44 data: 17/06/2015 06:03:05

    Mi correggo. La costruzione esatta è: ActiveWorkbook.SaveAs Filename:= ""D:FILE_RIDOTTO", (*.txt), *.txt"
    Comunque, cerca nella Guida "Application.GetSaveAsFilename, metodo"



  • di Fabio (utente non iscritto) data: 17/06/2015 09:44:59

    Ho provato ha copiare la tua riga nel codice ma mi da "errore di compilazione" e mi evidenzia la D.
    Ho fatto diverse prove (modificando la riga) e ho cercato anche nella guida ma non riesco a venirne a capo (purtroppo la mia conoscenza del vba è limitata).
    Grazie
     
    Sub Macro1()
        ChDir "D:"
        Workbooks.OpenText Filename:= _
            "D:FILE_RIDOTTO.txt", Origin:= _
            xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:= _
            Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
            TrailingMinusNumbers:=True
        Cells.Find(What:="NXWEB_TITOLO_DETT", After:=ActiveCell, LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Activate
        Range(Selection, Selection.End(xlDown)).Select
        Selection.EntireRow.Delete
        
        ActiveWorkbook.SaveAs Filename:= ""D:FILE_RIDOTTO", (*.txt), *.txt"
        
        ActiveWindow.Close
    End Sub
    



  • di Marius44 data: 17/06/2015 13:11:31

    Forse ho commesso una leggerezza nel voler evidenziare il percorso di salvataggio fra gli apici. Metti solo una coppia di apici come nel codice sottostante.
    Spero che vada bene.
    Ciao e fammi sapere,
    Mario
     
    ActiveWorkbook.SaveAs Filename:= "D:FILE_RIDOTTO, (*.txt), *.txt"



  • di Fabio (utente non iscritto) data: 17/06/2015 15:04:50

    C'è ancora qualche problema, perchè mi da "errore di run-time 1004.
    Nel frattempo, ho trovato in internet questo codice che, da una prima verifica, pare funzionare.
    Ti ringrazio per il tuo interessamento.
    Ciao
    Fabio
     
    ActiveWorkbook.SaveAs Filename:=Mydir & "" & Nomefile & ".txt", FileFormat:=xlUnicodeText



  • di Marius44 data: 17/06/2015 15:27:39

    Ciao Fabio,
    se confronti i due codici appaiono quasi uguali. Se quello che hai trovato funziona, meglio così. In quello che segnalato da me forse c'è una virgola in più (dopo RIDOTTO?)
    Comunque meglio per te se hai risolto. Ciao,
    Mario