Esportare dati su un file di testo

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
Yerle
00venerdì 14 ottobre 2022 16:01
Buongiorno, avrei bisogno di aiuto per del codice VBA che faccia un'operazione che ritengo semplice, ma che non riesco a fare.
Da un file excel molto spartano, con una serie di dati, ho necessità che gli stessi vengano riportati su file .txt con sempre la stessa spaziatura tra un campo e l'altro.
Allego i due files di esempio.
Grazie.

L2018
00venerdì 14 ottobre 2022 16:09
Re:
Yerle (Straken), 14/10/2022 16:01:

Buongiorno, avrei bisogno di aiuto per del codice VBA che faccia un'operazione che ritengo semplice, ma che non riesco a fare.
Da un file excel molto spartano, con una serie di dati, ho necessità che gli stessi vengano riportati su file .txt con sempre la stessa spaziatura tra un campo e l'altro.
Allego i due files di esempio.
Grazie.




i quali non ci sono
Yerle
00venerdì 14 ottobre 2022 16:18
Non riesco a caricarli, non so perché... nemmeno le immagini mi fa caricare. Forse è qualche impostazione del proxy in ufficio: provo stasera da casa, scusate...

Yerle
00venerdì 14 ottobre 2022 21:10
Spero ora di esserci riuscito.
Specifico solo che nel file .txt le distanze tra l'inizio dei vari campi sono fisse.
Tra il cognome e il nome è 74, tra il nome e il codice catastale è 64 e cosi via. In pratica il codice dovrebbe aggiungere spazi al campo fino a giungere alle varie lunghezze.
Spero di essermi spiegato.
Grazie.
L2018
00venerdì 14 ottobre 2022 22:29
ciao
ti fornisco il file completo di una mia vecchia macro, che però non sarei in grado di modificare troppo.
provato e funziona, gli ho detto di salvare tutti i campi ma la tua affermazione

Tra il cognome e il nome è 74, tra il nome e il codice catastale è 64 e cosi via

non mi sembra giusta perchè se il nome è di lunghezza variabile allora il codice catastale non viene sempre incolonnato come vuoi tu.
Perciò mi sono limitato a dare ai vari campi un valore arbitrario che proverai tu a correggere per farti quadrare i conti.
Per ottenere un testo come il tuo esempio ho eliminato le intestazioni

LEO

vedo che nel tuo TXT di esempio hai tolto il sesso del contribuente e gia che c'ero ho modificato le 2 righe, cosa che puoi fare anche tu, sostituendo le seguenti 2 righe a quelle che ci sono
ListaCol = Array(1, 2, 3, 4, 5, 7) '<< Le colonne da copiare
ListaLargh = Array(25, 23, 19, 10, 29, 16) '<< La larghezza di ogni campo
Yerle
00venerdì 14 ottobre 2022 22:49
Intendevo tra l'inizio di un campo e l'inizio dell'altro: in definitiva i vari campi hanno lunghezze totali fisse date dalla somma dei caratteri usati nei valori e gli eventuali spazi bianchi.
Provo la tua macro e ti faccio sapere.
Grazie.
Yerle
00sabato 15 ottobre 2022 09:52
La macro non sembra creare alcun file...
L2018
00sabato 15 ottobre 2022 10:15
ciao
hai detto bene non sembra
infatti il file creato si trova nella cartella di default assegnata al tuo Office
nella macro dovresti cambiare la stringa
"TESTO.txt"

in qualcosa del tipo "C:\users\.........."
cioè il percorso completo ed esatto di dove tu vuoi che venga salvato il testo, senza dimenticare gli apici

LEO
Yerle
00sabato 15 ottobre 2022 18:56
Ti ringrazio.
Scusa ma avevo fatto una ricerca su tutto C: senza trovare nulla, evidentemente ho problemi con WIN10.
Sono andato nella cartella di default di Office e l'ho trovato: ora sistemo la macro con le grandezze esatte dei campi.
Un'ultima cosa, se non chiedo troppo: per far creare il file .txt nella stessa cartella in cui si trova il file excel che tipo di percorso devo usare?
Grazie.
L2018
00sabato 15 ottobre 2022 20:45
ciao
in teoria il nome del file dovrebbe essere costituito dall'intero percorso, ma volendo che il testo venga salvato sempre nella stessa cartella dove si trova l' XLSM, sarà necessario, nella macro, sostituire

DestFile = "TESTO.txt"

con

DestFile = ThisWorkbook.Path & "\" & "TESTO.txt"

LEO
Yerle
00sabato 15 ottobre 2022 21:55
Perfetto, grazie.
Era ciò che mi serviva.
Ancora grazie di cuore!
L2018
00sabato 15 ottobre 2022 22:13
ciao
grazie del riscontro

LEO
L2018
00domenica 16 ottobre 2022 12:29
altra chicca
il file opera ma non si è sicuri se e dove sia il file di testo
e a parte l'ultimo aggiustamento nella macro, come ultima riga appena prima di END SUB si puo' mettere

Range("B65000").End(xlUp).Offset(1, -1).Select

questa semplice aggiunta posizionerà il cursore subito dopo l'ultimo record, sia a conferma del lavoro fatto, sia per predisporre ad ulteriori aggiunte di record.

LEO
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 10:01.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com