View Full Version : Excel avanzato: come salvare una colonna in formato txt ?
Come dal titolo: ho una colonna e vorrei salvarla in un normalissimo file .txt, come fare tutto in automatico ? Per ora mi arrangio con il copia e incolla dentro il Notepad, però mi piacerebbe farlo in automatico, tipo con una macro... le colonne sono più di una e diventa noioso farlo a mano... Qualcuno sa aiutarmi ? Io pensavo che excel avendo la possibilità di salvare in formato testo abbia un oggetto che gli consente di creare file txt, quindi con le macro potrebbe essere possibile in teoria ? Inoltre vorrei dare un nome ad ogni file che corrisponda all'intestazione della colonna.
Aiuto !:wtf:
ma cosa vuoi fare? salvare ogni colonna in un diverso file di testo?
Esatto, magari prendendo come nome il contenuto della prima riga di ogni colonna...
Questa macro mi sembra che funzioni.
Sicuramente si può fare di meglio; non so bene come gestire l'I/O con il basic. Cmq, nonostante la creazione di fogli e cartelle e il relativo stress per la memoria, funziona.
Dimmi se ti ci trovi bene.
E' un po' commentata.
Sub SalvaTxt()
On Error Resume Next
Set inizio = ActiveWorkbook.ActiveSheet ' foglio iniziale con i dati
Set nuovo = ActiveWorkbook.Sheets.Add ' aggiunge un foglio nuovo
i = 1
cella_iniziale = inizio.Cells(1, i) ' intestazione della colonna
While Not (IsEmpty(cella_iniziale) Or IsNull(cella_iniziale)) ' forse basta IsEmpy... boh
' Si ferma la prima volta che trova una colonna con la prima cella vuota
nuovo.Columns(1).Value = inizio.Columns(i).Value
nuovo.Copy ' lo copia in un nuovo workbook
With ActiveWorkbook.ActiveSheet ' lo salva come file di testo
' dopo averti chiesto conferma,
' se il file esiste già
.SaveAs Filename:="C:\" & .Cells(1, 1) & ".txt", _
FileFormat:=xlTextWindows
End With
ActiveWorkbook.Close SaveChanges:=False
i = i + 1
cella_iniziale = inizio.Cells(1, i)
Wend
' la riga successiva toglie gli avvisi;
' per sovrascrivere di default gli eventuali file esistenti,
' spostala all'inizio della routine.
Application.DisplayAlerts = False
nuovo.Delete
Application.DisplayAlerts = True
End Sub
Grazie Guldo76 :D
Il tuo aiuto è stato essenziale, comunque questo è quello che mi serviva:
Sub SalvaTxtNew()
On Error Resume Next
Percorso = "C:\Documents and Settings\Txt\"
Set inizio = ActiveWorkbook.ActiveSheet ' foglio iniziale con i dati
Set nuovo = ActiveWorkbook.Sheets.Add ' aggiunge un foglio nuovo
c = 34
cella_iniziale = inizio.Cells(1, c) ' intestazione della colonna
While Not (IsEmpty(cella_iniziale) Or IsNull(cella_iniziale)) ' forse basta IsEmpy... boh
' Si ferma la prima volta che trova una colonna con la prima cella vuota
nuovo.Columns(1).Value = inizio.Columns(c).Value
nuovo.Rows(1).Delete
nuovo.Copy ' lo copia in un nuovo workbook
With ActiveWorkbook.ActiveSheet ' lo salva come file di testo
' dopo averti chiesto conferma,
' se il file esiste già
.SaveAs Filename:=Percorso & inizio.Cells(1, c) & ".txt", _
FileFormat:=xlTextWindows
End With
ActiveWorkbook.Close SaveChanges:=False
nuovo.Columns(1).Delete
c = c + 1
cella_iniziale = inizio.Cells(1, c)
Wend
' la riga successiva toglie gli avvisi;
' per sovrascrivere di default gli eventuali file esistenti,
' Application.DisplayAlerts = False
nuovo.Delete
Application.DisplayAlerts = True
End Sub
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.