Condividi:        

[EXCEL] Esportare dati

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

[EXCEL] Esportare dati

Postdi ramset64 » 29/12/08 17:37

Magico Anthony credi sia possibile creare una macro che esporti dei dati da excel su un file txt?

In pratica ho un file di excel (file1.xlsm) e vorrei esportare i dati in formato txt (file1.txt).

Come vedi nei file di esempio, i dati sono pressochè identici tranne la data che nel formato txt deve essere trasformata in questo modo AAAAMMGG (20081229 per la data di oggi) e per la prima riga di excel che NON deve essere riportata nel file txt.

La macro dovrebbe poi salvare il nuovo file in un determinato percorso con lo stesso nome del file di excel (se possibile).

Un grosso grazie per l'aiuto che mi hai dato finora e tantissimi auguri a te ed a tutti i frequentatori del forum.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 29/12/08 21:05

Manca l' allegato con la descrizione dei dati...

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 29/12/08 21:13

Scusami... eccolo! :oops:
Allegati

[L’estensione rar è stata disattivata e non puó essere visualizzata.]

ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi tutamimetica » 30/12/08 10:33

Ti premetto che con le macro non ci so fare, ma ho provato e ho visto che funziona quindi te la propongo:
Sub Macro1()
'
ActiveWorkbook.SaveAs Filename:="C:\Users\........\Desktop\File1.txt", _
FileFormat:=xlText, CreateBackup:=False
End Sub
Le tue date erano in formato TESTO io le ho cambiate in formato DATA.
Ciao Tuta
tutamimetica
Utente Senior
 
Post: 209
Iscritto il: 10/06/08 17:25

Re: [EXCEL] Esportare dati

Postdi ramset64 » 30/12/08 10:45

Ciao tutamimetica,
in questo momento non sono in grado di provare la tua macro, lo farò stasera ma.... le date originale DEVONO restare in formato testo.
Ti ringrazio per l'aiuto!
Auguroni
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 30/12/08 14:32

Ti rimanderei a questa discussione dove una richiesta simile era stata trattata sia con vba che con procedure di salvataggio excel: viewtopic.php?f=26&t=49687

Vedi se riesci a farne uso.

Se hai bisogno di ulteriore supporto, vorrei avere la chiara visione del problema; ad esempio:
-quale e' l' esigenza finale che vuoi risolvere salvando in txt?
-hai in mente anche esigenze di appending ai file creati?

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 30/12/08 16:58

Anthony47 ha scritto:Ti rimanderei a questa discussione dove una richiesta simile era stata trattata sia con vba che con procedure di salvataggio excel: viewtopic.php?f=26&t=49687
Vedi se riesci a farne uso.

Grazie per la segnalazione ma avevo già letto la discussione. L'esigenza è un pò diversa che in aggiunta alla mia quasi inesistente capacità con vba diventa totalmente diversa. :oops:
Anthony47 ha scritto:Se hai bisogno di ulteriore supporto, vorrei avere la chiara visione del problema; ad esempio:
-quale e' l' esigenza finale che vuoi risolvere salvando in txt?
-hai in mente anche esigenze di appending ai file creati?
Ciao.

Lo scopo finale è quello di poter esportare i dati in maniera leggibile da altro software (tradestation).
Nessuna necessità di appending ai file creati!
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 31/12/08 21:12

Il mio suggerimento e' che usi la macro "Sub MacroTxt()" del post che ti ho linkato, la prima versione, con la sola aggiunta della cancellazione prima riga:
Codice: Seleziona tutto
    Sub MacroTxt()
        ActiveWorkbook.Save
        Range("A1").EntireRow.Delete
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:="NOME_FILE.txt", FileFormat:=xlText, CreateBackup:=False
    End Sub


Buon anno.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Esportare dati

Postdi ramset64 » 02/01/09 11:10

Anthony a me non sembra funzionare affatto e poi come cambierebbe il formato della data?
Grazie, buon anno anche a te.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 02/01/09 18:41

In effetti la macro salva le colonne come sono adesso, senza modificare la stringa in col F.
Per questo puoi crearti un secondo foglio in cui riporti le colonne che ti servono trasponendoli nelle colonne che preferisci; per la colonna K farai un riassemblaggio della stringa concatenando in sequenza Destra/4 crt, sinistra/2 crt, centrali/2crt.
Nella macro aggiungerai in testa Sheets("Foglio2").select

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 03/01/09 11:26

Anthony a me non funziona, perchè non capisco come modificarla. Comunque ho registrato un pò di operazioni ed ho guardato altre tue macro per aiutarmi, alla fine ho tirato fuori qualcosa che sembra funzionare (che allego nel file).

Due cose, la prima, perchè nel foglio3 tutto quello che viene copiato ha il classico triangolino d'errore? Come si fa ad eliminarlo (curiosità)? Mi riferisco a modifiche da apportare al codice ovviamente!

La seconda, il file txt viene salvato sempre con lo stesso nome, mentre io vorrei che lo salvasse con lo stesso nome del file di excel che contiene la macro, come si fa?
Grazie
Allegati

[L’estensione rar è stata disattivata e non puó essere visualizzata.]

ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi ramset64 » 03/01/09 14:29

Aggiungo ancora una domanda.
Dopo aver salvato il file.txt, il file di excel cambia il nome del foglio3 (lo rinomina come il file.txt), è possibile evitare questo?
grazie
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 03/01/09 19:14

Come vedi la necessita' aguzza l' ingegno; bene!
Per evitare di sporcare il txt con le informazioni sulle righe presenti, puoi fare qualsto calcolo direttamente nel vba con l' istruzione
Codice: Seleziona tutto
X = Worksheets("Foglio1").Cells(Rows.count,6).Enx(xlup).row

Tieni anche presente che, dopo aver replicato le formule, e' inutile fare il copia/incolla speciale valori giacche' con il salvataggio ".txt" automaticamente saranno salvati i valori presenti.

Come pure e' superflua la tecnica di leggere il nome dell' ActiveWorkbook e poi chiudere il Workbook con quel nome; e' sufficiente usare
Codice: Seleziona tutto
Activeworkbook.close SaveChanges:=False

Per quanto riguarda il nome con cui salvare, sostituirai la tua "ActiveWorkbook.SaveAs etc etc" con queste 2:
Codice: Seleziona tutto
NomeTxt = Replace(ActiveWorkbook.Name, ".xlsm", ".txt")
ActiveWorkbook.SaveAs Filename:=NomeTxt, _
    FileFormat:=xlUnicodeText, CreateBackup:=False

Il triangolino sulle pseudodate non e' un errore ma una segnalazione; se espandi il "punto esclamativo" che vedi quando selezioni la cella, noterai che segnala "Numero memorizzato come testo". Se ti da' fastidio puoi emininare questa segnalazione su Menu /Strumenti /Opzioni, tab Controlli errori.

Dopo aver salvato in formato txt il file e' da chiudere, cosa che la macro mi pare faccia gia' (Workbooks(OWb).Close SaveChanges:=False o come la vorrai modificare) perche' non so se le caratteristiche non compatibili col formato txt vengono tutte mantenute; in questo senso e' anche opportuno che il file venga salvato a inizio macro (aggiungi ActiveWorkbook.Save).

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 03/01/09 20:53

Grazie per tutte le info Anthony....

X = Worksheets("Foglio1").Cells(Rows.count,6).Enx(xlup).row
Questa riga non riesco ad inserirla nel codice, mi da sempre errore... ma va copiata cosi com'è o necessita di qualche modifica?

Se lancio la macro da un foglio diverso dal foglio3, mi da errore a questa riga:
Worksheets("Foglio3").Range("A1:G1").Select
se la sostituisco con:
Sheets("Foglio3").Select
Range("A1:G1").Select
funziona correttamente.
Eppure a me l'istruzione Worksheets("Foglio3").Range("A1:G1").Select sembra corretta... dove sta l'errore?

Grazie,
ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi ramset64 » 03/01/09 23:01

Porta pazienza Anthony.... ancora una domanda:
Se volessi portare questa formula direttamente in vba :
STRINGA.ESTRAI(F2,7,4)&STRINGA.ESTRAI(F2,1,2)&STRINGA.ESTRAI(F2,4,2)
si può fare?
Lo so che non è necessario ma voglio capirci un pò di più :oops:
Grazie ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 03/01/09 23:54

Orrore: non X = Worksheets("Foglio1").Cells(Rows.count,6).Enx(xlup).row, ma
Codice: Seleziona tutto
X = Worksheets("Foglio1").Cells(Rows.count,6).End(xlup).row

Per l' altra domanda, userai
Codice: Seleziona tutto
Right(Range("F2").value,4) & left(Range("F2").value,2) & mid(Range("F2").value,4,2)

Per Worksheets("Foglio3").Range("A1:G1").Select, semplicemente ".Select" non lo puoi fare su un foglio non attivo: "Per la selezione di celle è possibile utilizzare il metodo Select solo sul foglio di lavoro attivo" (dall' help vba alla voce "Selezione e attivazione di celle").

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 04/01/09 00:33

Sei un grande, davvero! Ma eventuamente per selezionare un range di un foglio non attivo che funzione bisognerebbe utilizzare?
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi ramset64 » 04/01/09 11:10

Sempre per cercare di capirci un pò di più... ho eliminato le formule del primo rigo del foglio 3 e voglio farle inserire dalla macro:

Worksheets("Foglio3").Range("A1").Value = "=STRINGA.ESTRAI(Foglio1!F2,7,4)&STRINGA.ESTRAI(Foglio1!F2,1,2)&STRINGA.ESTRAI(Foglio1!F2,4,2)"
Worksheets("Foglio3").Range("B1").Value = "=Foglio1!G2"
Worksheets("Foglio3").Range("C1").Value = "=Foglio1!H2"
Worksheets("Foglio3").Range("D1").Value = "=Foglio1!I2"
Worksheets("Foglio3").Range("E1").Value = "=Foglio1!J2"
Worksheets("Foglio3").Range("F1").Value = "=Foglio1!K2"
Worksheets("Foglio3").Range("G1").Value = "=Foglio1!L2"
quando parte la macro però nella cella A1 (stringa della data), mi da =STRINGA.ESTRAI(Foglio1!F2,7,4)&STRINGA.ESTRAI(Foglio1!F2,1,2)&STRINGA.ESTRAI(Foglio1!F2,4,2) anzichè il risultato.
Ho provato a formattare il relativo range con
Range("A1:G1").Select
Selection.NumberFormat = "General"
ma il risultato è sempre lo stesso.
Come posso risolvere?
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 04/01/09 12:45

Sempre piu' ardito...
Quando non sai come codificare, prova a registrare una macro mentre fai l' operazione.
Nel caso in esame devi usare non ".value" (che assegna un valore), ma ".Formulalocal", che assegna una formula scritta nel linguaggio nazionale con cui lavori. Cioe':
Codice: Seleziona tutto
Worksheets("Foglio3").Range("A1").Formulalocal = "=STRINGA.ESTRAI(Foglio1!F2;7;4)&STRINGA.ESTRAI(Foglio1!F2;1;2)&STRINGA.ESTRAI(Foglio1!F2;4;2)"
(nota i separatori di campo "punto-e-virgola")
Scritto in inglese e usando Sinistra (per mese) e Destra (per anno), come ti ho consigliato, diventa piu' semplicemente
Codice: Seleziona tutto
Worksheets("Foglio3").Range("A1").Formula = "=Right(Foglio1!F2,4)&Left(Foglio1!F2,2)&Mid(Foglio1!F2,4,2)"


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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 04/01/09 14:54

Grazie Anthony, risolto, però....
se la inserisco nei miei file, sotto VBA Project Foglio1 (dove ci sono tutte le macro che mi servono compresa quella che mi hai scritto tu per l'incolonnare i dati), mi da errore 400.
Se la inserisco nel modulo1 funziona perfettamente ma non mi fa associare la macro ad un pulsante nella progettazione.

Come mai non posso inserirla dove ci sono le altre macro?

Come posso richiamarla sotto progettazione da un pulsante?

Ho provato a scrivere su VBA Project questo codice (guardando gli altri codici)
Private Sub EsportaDatiTxt_Click()
EsportaDatiTxt
End Sub
ma non parte, mi da un errore.
Grazie
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Esportare dati":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti