|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2000
Città: Roma
Messaggi: 401
|
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 !
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
ma cosa vuoi fare? salvare ogni colonna in un diverso file di testo?
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2000
Città: Roma
Messaggi: 401
|
Esatto, magari prendendo come nome il contenuto della prima riga di ogni colonna...
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Morio Cho
Messaggi: 2595
|
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. Codice:
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
__________________
Sono GULDO, non Guido! Cioè, certo che guido... Bé, insomma, avete capito ![]() Linux 2.6.26|Debian|Debian@Hwupgrade|Debian Clan|Solo Puffin ti darà forza e grinta a volontà! NERD rank 62|Milla Jovovich|大事な物はいつも形の無い物だけ Sito e Forum sul Giappone|La mia libreria su aNobii |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2000
Città: Roma
Messaggi: 401
|
Grazie Guldo76
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:10.




















