Condividi:        

Macro Creazione file txt

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro Creazione file txt

Postdi acipriani » 22/03/13 23:34

Ciao a tutti. Grazie per i suggerimenti relativi al mio primo post con i quali ho risolto il problema dei menu a discesa condizionati regione provincia comune.

Per finire il lavoro in questione avrei bisogno di esportare dei dati presenti in varie celle in un file txt compilato per righe dove ogni campo ha una lunghezza prestabilita.

Per un'altro lavoro simile ho utilizzato una macro simile trovata in rete che però mi esporta le celle di un range, non riesco a modoficarle indicando solo quelle che volgio io e dando all'out il giusto numero di caratteri per ogni cella

Codice: Seleziona tutto
Sub creafile()
' Crea file di testo da una zona dati Excel
'
Path$ = "C:" ' percorso per salvataggio file
Nomefile$ = "Prova_1.txt"   ' nome del file da salvare
PF$ = Path$ & Nomefile$        ' costruisce percorso completo
nri% = 4 ' imposta n° righe
nco% = 8 ' imposta n° colonne
'
If Dir(PF$) <> "" Then         ' verifica se il file esiste già
    msgrisp = MsgBox("Il file esiste già." & Chr(13) & "Sostituirlo?", 308, "Messaggio Macro Creafile")
    If msgrisp = 7 Then End
End If
F% = FreeFile                  ' acquisisce primo numero di file libero
Open PF$ For Output As #F%     ' apre un file per output
For riga% = 1 To nri%
    For col% = 1 To nco%
        If col% < nco% Then
           Print #F%, Sheets("Foglio1").Cells(riga%, col%); Chr(9); 'Scrive dati nel file
        Else
           Print #F%, Sheets("Foglio1").Cells(riga%, col%)
        End If
    Next col%
    If riga% < nri Then Print #F%, Chr(13)
Next riga%
'
Close #F%                      'Chiude File
'
MsgBox "Creato file " & Nomefile$, 64, "Messaggio Macro Creafile"
'
End Sub
acipriani
Utente Junior
 
Post: 11
Iscritto il: 21/03/13 20:56

Sponsor
 

Re: Macro Creazione file txt

Postdi Flash30005 » 23/03/13 01:20

Quindi :?: :roll:
Dovremmo interpellare LoStregone.it :?:
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro Creazione file txt

Postdi acipriani » 23/03/13 21:35

Scusatemi non mi sono accorto di non avere concluso la domanda.......

Praticamente volevo sapere se è possibile esportare in un txt non un range di celle rettangolare ma una selezione di campi ben specifica non necessariamente inserite in un range rettangolare.

Grazie e scusatemi per la disattenzione...... :aaah
acipriani
Utente Junior
 
Post: 11
Iscritto il: 21/03/13 20:56

Re: Macro Creazione file txt

Postdi Flash30005 » 23/03/13 21:56

Si, penso sia possibile
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Macro Creazione file txt

Postdi ricky53 » 24/03/13 00:27

Ciao,
se non espliciti bene come vuoi scrivere il file txt, ossia come deve essere composta ogni riga del file (si spera che le righe abbiamo tutte la stessa composizione).

I dati per comporre le righe da scrivere da quali celle vengono presi ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Macro Creazione file txt

Postdi acipriani » 11/04/13 09:30

Salve, vedrò di spiegarmi bene.

I dati del file che devo generare derivano da un foglio su cui inserisco delle anagrafiche di persone, per semplicità con una macro assegnata ad un pulsante copio questi dati dalle varie celle su un altro foglio dove ogni anagrafica viene "spalmata" su una riga e ovviamente più colonne, quindi anagrafica1 è sulla riga 1 colonne da A a Q anagrafica2 è sulla riga 2 colonne da A a Q e cosi via in modo da costruirmi un range rettangolare semplice.

Questo file però deve avere delle caratteristiche precise ad esempio non deve avere separatori tra i vari campi e ogni riga in totale deve essere lunga 238 caratteri di cui 236 per i dati veri e propri più 2 caratteri per i "CR+LF" che dovrebbero essere le istruzioni per il ritorno a capo (cosi è indicato nelle istruzioni del gestionale per la costruzione del file) tranne l'ultima riga che non le deve avere.
I dati devono essere formattati in maniera precisa ovvero al campo cognome ad esempio devono corrispondere obbligatoriamente 50 caratteri quindi devo riempire di spazi bianchi quelli che avanzano dopo aver scritto il cognome vero e proprio e cosi via.

Non so se è meglio copiare i dati formattando la cella (cosa che tra l'altro non so fare) o con una macro creare direttamente il file txt con la dovuta formattazione.

Vorrei quindi indicazioni su come creare il file txt formattando le righe secondo le specifiche

Grazie mille
acipriani
Utente Junior
 
Post: 11
Iscritto il: 21/03/13 20:56

Re: Macro Creazione file txt

Postdi Anthony47 » 11/04/13 23:14

Il mio suggerimento e' che usi formule di excel per normalizzare i tuoi campi.
Ad esempio se hai in A2 un cognome da normalizzare a 50 crt puoi usare la formula
Codice: Seleziona tutto
=A2&RIPETI(" ";50-LUNGHEZZA(A2))

Se hai in A3 un numero che vuoi normalizzare a 8 cifre intere e due decimali userai la formula
Codice: Seleziona tutto
=TESTO(A3;"00000000,00")

Poi con una ulteriore formula concateni tutti questi campi normalizzati (=A2&B2&C2& etc etc) ottenendo il testo del tuo file finale.
Per scrivere questi ultimi dati su un file txt potresti usare una macro come questa:
Codice: Seleziona tutto
Sub textwrt()
OutArea = "A2:A1000"    '<<< Area da salvare
LastR = Evaluate("=MAX((" & OutArea & "<>"""")*(ROW(" & OutArea & ")))")
'
Filename = "MyFile.txt"     '<<< Il nome del file
FileNo = FreeFile
Open Filename For Output As #FileNo
aaa = Range(OutArea).Cells(1, 1).Resize(LastR - Range(OutArea).Cells(1, 1).Row + 1).Address
For Each myCell In Range(OutArea).Cells(1, 1).Resize(LastR - Range(OutArea).Cells(1, 1).Row + 1)
    If myCell.Row < LastR Then
        Print #FileNo, myCell.Value
    Else
        Print #FileNo, myCell.Value;
    End If
Next myCell
Close #FileNo
End Sub

Personalizza le istruzioni marcate <<<; la prima contiene l' area all' interno della quale sono contenute le stringhe ottenute dal concatenamento finale, diciamo che corrisponde all' area in cui hai messo la formula del concatenamento e saranno salvate solo fino all' ultima riga che contiene un dato non nullo.
I CR+LF sono inseriti automaticamente, salvo che sull' ultima riga.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro Creazione file txt

Postdi acipriani » 11/04/13 23:22

Grazie Anthony provo....
acipriani
Utente Junior
 
Post: 11
Iscritto il: 21/03/13 20:56


Torna a Applicazioni Office Windows


Topic correlati a "Macro Creazione file txt":


Chi c’è in linea

Visitano il forum: Nessuno e 37 ospiti

cron