Creazione n file TXT



  • Creazione n file TXT
    di BURY (utente non iscritto) data: 31/01/2016 01:25:22

    Buongiorno,

    ho un foglio excel con una colonna in cui è contenuto del testo.
    Vorrei che per ogni riga del venisse creato un file TXT.
    E' possibile creare con una macro VBA ?



  • di patel data: 31/01/2016 11:28:52

    è possibile, allega un piccolo file di esempio, come devono essere nominati i file ? il contenuto deve essere quello della cella ?





  • di BURY (utente non iscritto) data: 31/01/2016 12:44:18

    Grazie mille.
    Da qualche parte dovrebbe esserci un file di prova.rar.
    All'interno c'è un file xls costituito da due colonne.
    La prima è un ID la seconda è abstract.
    La cosa più importante per me è trasferire il testo nella colonna abstract in un semplice file txt.
    Il nome non è importante. Forse, potrebbe essere utile creare un file costituito da una parte letterale ed un numero che riprende l'ID se possibile.



  • di patel data: 31/01/2016 13:42:27

    prova questa modificando il nome della cartella di salvataggio
     
    Sub Creafile()
    Dim fs As Object
    lr = Cells(Rows.Count, "J").End(xlUp).Row
    Set fs = CreateObject("Scripting.FileSystemObject")
    For riga = 2 To 3 'lr
      nfile = "F" & Cells(riga, "I").Value & ".txt"
      Set a = fs.createtextfile("C:Documenti" & nfile, True)
      a.WriteLine Cells(riga, "J").Value
      a.Close
      Set a = Nothing
    Next
    MsgBox "Fatto"
    Set fs = Nothing
    End Sub






  • di BURY (utente non iscritto) data: 31/01/2016 14:11:11

    La logica mi sembra che ci sia ma:

    1. sono riuscito a creare solo 2 file Txt
    2. ho inserito il percorso "C:UsersAndreaDocumentsFILE" mentre mi ha messo due file in Documents e non nella cartella indicata
    3. Posso inserire un un trattino nel nome del file in questo modo "n_file" anzichè "nfile" ?



  • di Mohican1989 data: 31/01/2016 14:31:18

    Crea solo 2 file perchè patel prima di farti creare 800 file txt di un risultato che poteva piacerti o meno, ha deliberatamente "bloccato" il ciclo a 2 file txt così che potevi vedere se ti gradiva il risultato.

    Per fare tutte le righe devi sostituire questo pezzo del suo codice
    For riga = 2 To 3 'lr
    con
    For riga = 2 to lr
    lr se vedi prima è una variabile il cui contenuto sono le righe totali del tuo file excel.

    Per avere F_1 al posto di F1 come nome file basta cambiare questa riga
    nfile = "F" & Cells(riga, "I").Value & ".txt"
    in questa riga
    nfile = "F" & "_" & Cells(riga, "I").Value & ".txt"


    Per quanto riguarda il percorso devi sostituire
    Set a = fs.createtextfile("C:Documenti" & nfile, True)
    con
    Set a = fs.createtextfile("TUOPERCORSO" & nfile, True)

    Attento che se devi metterlo in C:ALEPIPPO alla fine devi mettere un altro slash ""
    Nel tuo caso dovrebbe essere Set a = fs.createtextfile("C:UsersAndreaDocumentsFILE" & nfile, True)



  • di BURY (utente non iscritto) data: 31/01/2016 14:47:10

    Probabilmente ho commesso qualche errore.
    Ho sostituito come mi è stato indicato ma Errore di run-time '5'.
    Ho cliccato su Debug e viene evidenziato la riga
    a.WriteLine Cells(riga, "J").Value
    Perchè ? Cosa dovrei fare, per favore ?
     
    Sub Creafile()
    Dim fs As Object
    lr = Cells(Rows.Count, "J").End(xlUp).Row
    Set fs = CreateObject("Scripting.FileSystemObject")
    For riga = 2 To lr
      nfile = "F" & "_" & Cells(riga, "J").Value & ".txt"
      Set a = fs.createtextfile("C:UsersAndreaDocumentsFILE" & nfile, True)
      a.WriteLine Cells(riga, "J").Value
      a.Close
      Set a = Nothing
    Next
    MsgBox "Fatto"
    Set fs = Nothing
    End Sub



  • di Mohican1989 data: 31/01/2016 15:15:41

    Attento perchè al posto che inserire come nome file F_IDRIGA per cui uscirebbero i file nominati F_1,F_2 etc
    stai inserendo i file in modo che esca F_ABSTRACT perchè hai messo la J al posto della I che patel ha inizialmente messo nel codice
    nfile = "F" & "_" & Cells(riga, "J").Value & ".txt"
    deve essere
    nfile = "F" & "_" & Cells(riga, "I").Value & ".txt"

    Per quanto riguarda il blocco ho cercato su internet perchè a prima occhiata non riuscivo a capire il problema, ci sono dei caratteri speciali. Ho imparato qualcosa anch'io.

    Questa riga
    Set a = fs.createtextfile("C:UsersAndreaDocumentsFILE" & nfile, True)
    modificala così in modo da poter scrivere caratteri speciali
    Set a = fs.createtextfile("C:UsersAndreaDocumentsFILE" & nfile, True,UTF-8)

     



  • di BURY (utente non iscritto) data: 31/01/2016 15:36:10

    Ora funziona. Grazie mille di cuore !