Condividi:        

[Macro Excel] Creare un file .txt a partire da un file .xls

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 Excel] Creare un file .txt a partire da un file .xls

Postdi umaga » 19/07/10 22:13

Salve a tutti!
Vorrei chiedere un vostro suggerimento su come realizzare una macro in Excel, ho cercato nel post precedenti ma non ho trovato ciò che fa a caso mio.
Posseggo un file file Excel contenente una tabella di circa 700 record (righe) e una decina di campi (colonne). Alcuni campi contengono un valore numerico fisso, alcuni una stringa, alcuni delle caselle di controllo, alcuni dei menu di scelta tra 5-6 possibilità eccetera. Ma supponiamo siano tutti numeri per semplicità.
A partire da questo voglio generare un file XML (che possa essere interpretato da un apposito software) che assegni i i valori contenuti nei vari campi a delle variabili/attributi. Mi è stato consigliato di realizzare una macro che generi un file TXT e poi rinominare quest'ultimo in XML.
Credo di dover realizzare un ciclo "Do While" da 1 a 700 in modo da scansionare ogni riga e fare le operazioni. Mi sapreste aiutare a impostare il programma e a scrivere i comandi principali per eseguire queste operazioni?
Grazie mille.
umaga
Newbie
 
Post: 6
Iscritto il: 19/07/10 21:57

Sponsor
 

Re: [Macro Excel] Creare un file .txt a partire da un file .xls

Postdi ricky53 » 19/07/10 23:39

Ciao,
perchè non provi con
File,
Salva con nome
... e qui scegli
"Testo (delimitato da tabulazione) (*.TXT)" ?

oppure salvi in formato "CSV"

Ciao da Ricky53
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 Excel] Creare un file .txt a partire da un file .xls

Postdi maxmula » 20/07/10 08:58

Se non hai necessità particolari, il suggerimento di Ricky53 dovrebbe andarti più che bene.

Se invece hai esigenza di inserire il salvataggio in una macro, puoi ricorrere all'istruzione:

Codice: Seleziona tutto
ActiveWorkbook.SaveAs(PERCORSO_E_NOMEFILE,FORMATO)


Per la lista completa dei parametri e dei formati file disponibili, ti rimando alla Guida di Excel ;) , paragrafo "Il metodo SaveAs applicato all'oggetto Workbook".
Per arrivarci, ti basta scrivere "SaveAs" in una qualunque Sub, evidenziarlo e premere F1.


Se invece hai esigenza di salvare in formato testo, ma con caratteristiche non standard (ad esempio inserendo un simbolo "|" tra i vari campi per separare le colonne), dovrai necessariamente ricorrere ad una macro del genere:
Codice: Seleziona tutto
F = FreeFile()
Open PERCORSO_E_NOMEFILE For Output As #F
    For R = PRIMA_RIGA To ULTIMA_RIGA
        For C = 1 To ULTIMA_COLONNA
            S = Cells(R, C) & vbTab & "| "   '"COMPONE" LA RIGA DA STAMPARE
        Next
        Print #F, S     'SCRIVE L 'INTERA RIGA NEL FILE
    Next
Close #F



Facci sapere!
Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [Macro Excel] Creare un file .txt a partire da un file .xls

Postdi Anthony47 » 20/07/10 22:11

Ciao umaga e benvenuto nel forum.
Con i suggerimenti ricevuti potrai compilare un file txt del tipo tab-separated.
Se hai il problema di inserire anche i tag xml allora lo puoi fare con formule:
-ti scrivi in celle libere i vari tag da assegnare a ogni campo
-poi con santa pazienza ti compili una formula del tipo
Codice: Seleziona tutto
=$$Tag1 & Campo1 & $$FineTag1 & $$Tag2 & Campo2 & $$FineTag2 etc etc

Con $$ ho indicato quei riferimenti che vanno introdotti in indirizzamento "assoluto" (tipo $Z$1); potrebbe essere utile anche assegnare dei "nomi" alle celle che contengono i vari tag e poi puoi usare quei nomi nelle formule (e' una modalita' "assoluta implicita")
Poi copi la formula nelle righe successive.

Poi puoi copiare la colonna con questi risultati e incollarla su notepad.
In alternativa, ti metti questa formula su un foglio nuovo e poi salvi il file (in realta' "solo il foglio attivo") in formato txt, DOPO aver salvato il file come xls.

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

Re: [Macro Excel] Creare un file .txt a partire da un file .xls

Postdi umaga » 21/07/10 15:34

Grazie mille per gli aiuti. Ho risolto il problema con un doppio ciclo For come quello segnalatomi da maxmula. Poi dato che come aveva capito dovevo formattare il tutto secondo una cosa del tipo:

Codice: Seleziona tutto
<alarms>
 <bitMaskAlarm eventBuffer="AlarmBuffer1" logToEventArchive="true" alarmId="000" eventType="14">
  <name>AL000</name>
  <source>al_0to15</source>

................ eccetera

I tag li ho ottenuti concatenandoli a mano come stringhe ai vari campi (colonne) del singolo record. Un solo problema ho avuto: con gli operatori necessari alla concatenazione (& e +). In alcune celle avevo delle stringhe, in alcune dei numeri. Se ho capito bene trovandosi a che fare con espressioni del tipo:

Codice: Seleziona tutto
Case 9:  RigaC = RigaC + "  <enabled>" & Cells(riga, col).Value + "</enabled>" + vbCrLf

se Cell(riga, col).Value contiene un numero è necessario usare &.
Tutto bene tranne che - ad esempio - inspiegabilmente l'ultima delle seguenti righe (quella commentata) mi produce un errore:

Codice: Seleziona tutto
Case 22: RigaC = RigaC + "  <actionMask>"
                       RigaC = RigaC & Cells(riga, col).Value
                       RigaC = RigaC + "</actionMask>"
                       RigaC = RigaC + vbCrLf
                       'RigaC = RigaC + "    <actionMask>" & Cells(riga, col).Value + "</actionMask>" + vbCrLf


Scrivendo invece le 4 concatenazioni una alla volta tutto va bene... :o Nessun problema per i miei scopi, ma a questo punto son diventato curioso...
umaga
Newbie
 
Post: 6
Iscritto il: 19/07/10 21:57

Re: [Macro Excel] Creare un file .txt a partire da un file .xls

Postdi ricky53 » 21/07/10 15:49

Ciao,

perchè non utilizzi "&" sempre ???

Ciao da Ricky53
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 Excel] Creare un file .txt a partire da un file .xls

Postdi maxmula » 21/07/10 15:54

Purtroppo non ci hai detto qual è l'errore che ti viene mostrato...

Provo a darti una dritta alla cieca:
- Quando si deve concatenare, occorre che tutti i parametri (specialmetnte quelli numerici) siano di tipo String. Prova quindi a convertire ogni oggetto in formato String col comando Cstr(oggetto). Ad esempio:
Codice: Seleziona tutto
RigaC = RigaC & "    <actionMask>" & cStr(Cells(riga, col).Value) & "</actionMask>" & vbCrLf


Spero sia quello che ti serviva ;)

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [Macro Excel] Creare un file .txt a partire da un file .xls

Postdi umaga » 26/07/10 14:44

Grazie ancora per le risposte. L'errore era di tipo di dato non corrispondente quindi il problema era effettivamente la concatenazione non corretta.
In realtà la soluzione più semplice era proprio quella suggerita da ricky53, ho provato e funziona; io ho inizato a usare VB solo la settimana scorsa, quindi ho iniziato a conoscere dapprima il + e solo successivamente &.
umaga
Newbie
 
Post: 6
Iscritto il: 19/07/10 21:57


Torna a Applicazioni Office Windows


Topic correlati a "[Macro Excel] Creare un file .txt a partire da un file .xls":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti

cron