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

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 08/01/09 01:03

Immagino che l' errore che ti da' sia "Impossibile salvare in questo formato, la cartella di lavoro contiene riferimenti ad altri fogli".
Insomma non puoi salvare Foglio3 e basta se in Foglio3 hai delle formule che fanno riferimento a un altro foglio di lavoro.
Insomma devi eliminare le formule e sostituire tutto con valori. Per farlo, aggiungi le seguenti 4 righe nella tua macro, nella posizione indicata:

Codice: Seleziona tutto
Application.CutCopyMode = False     '<<<< ESISTENTE
'seguono 4 righe da aggiungere
    Cells.Copy
    Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
 'Riporto il cursore sulla prima cella    '<<<<< ESISTENTE


Ricorda che e' anche necessario sostituire l' istruzione che genera la data:
Codice: Seleziona tutto
Worksheets("Foglio3").Range("A1").FormulaLocal = "=Data(destra(Foglio1!F2;4);sinistra(Foglio1!F2;2);stringa.estrai(Foglio1!F2;4;2))"

Mi preme sottolineare che il formato excel4 salva il foglio attivo ma non i fogli macro; non so valutare quale e' l' impatto di questa situazione in termini di integrita' dei tuoi dati; mi pare che tutto il generato viene salvato in directory diversa dagli originali, che quindi non sarebbero alterati.

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

Sponsor
 

Re: [EXCEL] Esportare dati

Postdi ramset64 » 08/01/09 20:56

Anthony ho inserito le tue istruzioni, tutto funziona tranne che il salvataggio del file (anzi del foglio). Non è excel che mi da l'errore ma direttamente la macro che si interrompe, in pratica quando va in esecuzione da errore a questa riga:

ActiveSheet.SaveAs Filename:=NomeFile, FileFormat:=xlExcel4, CreateBackup:=False

Te lo riallego, puoi provare gentilmente a lanciare la macro e capire dove sta il problema?
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 Anthony47 » 08/01/09 21:42

Quando eseguo la macro, corretta l' istruzione per la formula della Data, essa si completa fini alla chiusura del file senza messaggi di errore.
A te che errore da?
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Esportare dati

Postdi ramset64 » 08/01/09 22:57

A me dice, Errore di run-time '1004'
Errore definito dall'applicazione o dall'oggetto.

Poi se clicco su debug mi evidenzia questa riga:
ActiveSheet.SaveAs Filename:=NomeFile, FileFormat:=xlExcel4, CreateBackup:=False

che sarà mai se a te funziona?
Che versione di excel utilizzi?
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 09/01/09 15:32

Tu hai 2007, e' possibile che l' opzione di salvataggio in formato compatibile excel4 non esiste; dovresti verificare tra le opzioni disponibili in "Salva con nome"; oppure nell' help-vba, nella sintassi dell' istruzione SaveAs.
A questo punto pero' il mio suggerimento e' di cancellare tutti gli altri fogli eccetto Foglio3 e salvare; lo fai modificando la macro come segue:
Codice: Seleziona tutto
ChDir "D:\BANCHEDATI\ESPORTA TXT"     '<<<ESISTENTE
'Assegno al file.txt lo stesso nome del file di excel      '<<<ESISTENTE
NomeFile = ActiveWorkbook.Name       '<<<ESISTENTE
'DA QUI 3 righe aggiunte, poi modifiche e cancellazioni
For I= ActiveWorkbook.Worksheets.Count to 1 step -1
If Sheets(I).name <> "Foglio3" then Sheets(I).delete
Next I
'Salvo il file.txt
ActiveWorkbook.SaveAs Filename:=NomeFile, CreateBackup:=False
'Messaggio a video
MsgBox ("Il file " + NomeFile + " è stato salvato, questo file sarà chiuso")
'Chiudo il file excel senza salvare altrimenti mi viene cambiato il nome del foglio 3 e non sarebbe utilizzabile successivamente
ActiveWorkbook.Close SaveChanges:=False
End Sub


Che sia la volta buona?
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19215
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Esportare dati

Postdi ramset64 » 09/01/09 16:01

No, non è la volta buona purtroppo. Cosi mi chiede ogni volta conferma per l'eliminazione dei fogli.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi ramset64 » 09/01/09 17:24

In attesa di capire come cavolo salvare i dati in un foglio excel, ho provato a mettere la condizione di "verifica se il file esiste" sulla macro che li salva in formato txt.

Eccola:
'Cambio drive del percorso dove salvare il nuovo file.txt
ChDrive "D:\"
'Percorso dove salvare il file.txt
ChDir "D:\BANCHEDATI\ESPORTA TXT"
'Assegno al file.txt lo stesso nome del file di excel
NomeTxt = Replace(ActiveWorkbook.Name, ".xlsm", ".txt")

On Error GoTo manca
Workbooks.Open NomeTxt
'istruzioni se il file esiste
ActiveWorkbook.SaveAs Filename:="Saint_Anthony.txt", FileFormat:=xlText, CreateBackup:=False
GoTo riprendi

manca:
'istruzioni se il nome non esiste
ActiveWorkbook.SaveAs Filename:=NomeTxt, _
FileFormat:=xlText, CreateBackup:=False

riprendi:
'Cancello tutto le colonne interessate del foglio3
Columns("A:G").ClearContents
'Messaggio a video
MsgBox ("Il file " + NomeTxt + " è stato salvato, questo file sarà chiuso")
'Chiudo il file excel senza salvare altrimenti mi viene cambiato il nome del foglio 3 e non sarebbe utilizzabile successivamente
ActiveWorkbook.Close SaveChanges:=False
End Sub

A me "sembra" scritta correttamente invece:
se il file che ha lo stesso nome del file di excel non esiste la macro funziona correttamente, se invece esiste si comporta in questo modo:
-salva il file Saint_Anthony.txt, visualizza il messaggio a video (come cavolo ci arriva direttamente li?????) e si ferma.
in pratica dell'ultima parte di codice "riprendi", esegue solo il rigo MsgBox....
Errore a parte (che ovviamente non trovo) non capisco come cavolo arrivi ad eseguire un solo rigo di un codice.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 10/01/09 00:33

La mia impressione e' che tutto dipende da una istruzione mancante, e cioe'
ActiveWorkbook.Close SaveChanges:=False
(vedi mio post del 07/01/09 primo pomeriggio)
Questa istruzione va inserita in questa posizione:
Codice: Seleziona tutto
'istruzioni se il file esiste       '<<< ESISTENTE
ActiveWorkbook.Close SaveChanges:=False  '<<< AGGIUNTA; chiude il file aperto sopra
ActiveWorkbook.SaveAs Filename:="Saint_Anthony.txt", FileFormat:=xlText, CreateBackup:=False           '<<< ESISTENTE

Quello che vedi e che hai descritto e' solo una ...illusione ottica.

La parte 'Cancello tutto le colonne interessate del foglio3 / Columns("A:G").ClearContents e' inutile.

Per quanto riguarda la conferma di cancellazione foglio, puoi eliminare la segnalazione (e altre segnalazioni di tipo warning) con l' istruzione
Application.DisplayAlerts = False da inserire in qualche posto prima del ciclo For /Next di cancellazione.

Attenzione anche al fatto che io mi limito a commentare sulla base di quanto esposto negli ultimi post, senza rifarmi la cronistoria di tutta la discussione.

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 10/01/09 11:19

Hai perfettamente ragione... in tutto.
Risolto!
Ancora una domanda però....

NomeTxt = Replace(ActiveWorkbook.Name, ".xlsm", ".txt")
Questa istruzione assegna a NomeTxt lo stesso nome del file attivo e gli cambia l'estensione.
Ma in caso si voglia cambiare il nome e lasciare la stessa estensione come si fa?
Mi spiego meglio, nel caso il file che voglio salvare esiste, da imput assegno un nuovo nome (NuovoNome).
L'istruzione che mi servirebbe è questa:
Cambia il nome del file da NomeTxt a NuovoNome e mantieni la stessa estensione!
Spero di essermi spiegato bene!
Ciao Anthony

P.s. tuttò ciò che mi serviva è stato fatto o quasi, in realtà mancano ancora 2 macro (molto simile, diciamo 1) che somigliano in qualche modo a quella che tu mi hai gentilmente scritto per incolonnare i dati. Io non mi ci metto neanche perchè sarebbe troppo difficile, se te la senti di perdere ancora mezzora del tuo tempo per me, spiego il tutto altrimenti grazie comunque di cuore per quanto fatto finora. :)
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 10/01/09 16:25

Ma in caso si voglia cambiare il nome e lasciare la stessa estensione come si fa?
Sei sicuro della domanda? Voglio dire che secondo la mia interpretazione tu gia' sai che l' estensione deve essere .txt, quindi basta fare NomeTxt=NuovoNome & ".txt"
O no?

Per quanto riguarda la "penultima domanda" (anche il tenente Colombo, dopo "l' ultima domanda" ne aveva ancora una da fare...), suggerisco di aprire una nuova discussione indicando tutti gli elementi del problema; questa e' diventata poco leggibile oramai.

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

Re: [EXCEL] Esportare dati

Postdi ramset64 » 10/01/09 16:54

Come sempre hai ragione.... grazie di esistere!
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi ramset64 » 10/01/09 20:11

Anthony, mi sono accorto che la macro che esporta i dati in formato excel è pericolosa. Infatti elimina i fogli 1 e 2 (che contengono i dati archiviati) e poi salva il solo foglio con i dati (e fin qui nessun problema).

Il problema nasce dal fatto che se non trova il percorso indicato nel codice per salvare il foglio, lo salva dove lavora il file che contiene la macro ed avendo lo stesso nome di fatto sovrascrive il file originale ed addio dati e può certamente succedere nel tempo che io cambi nome alla cartella di destinazione.

Non se se sia possibile, ma occorrerebbe scrivere nel codice di verificare la presenza della cartella di destinazione, in modo che se non dovesse esistere la macro si chiuda senza salvare nulla. E' possibile? Sai suggerirmi qualche altra eventuale alternartiva?
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi ramset64 » 10/01/09 21:28

Anthony ignora il mio precedente post. Qui di fuso c'è solo una cosa.... IO. :oops:
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL] Esportare dati

Postdi Anthony47 » 11/01/09 17:09

Non ho capito se il post da cancellare e' quello sovrastante (delle 20:11) o quello della discussione titolata " Incolonnare Massimi fino alle ore X ".
Se il problema della directory mancante fosse vera, allora tieni presente che:
-conviene inserire Application.DisplayAlerts = true subito dopo il ciclo For /Next di cancellazione fogli.
-puoi controllare che la directori che ti interessa esiste con un codice tipo
Codice: Seleziona tutto
If Len(Dir("La tua directory completa")) = 0 Then
'La directory manca
Msgbox("Codice errore xy: Directory assente, il processo sara' abortito") : exit Sub
End If
'Continua qui se la directory esiste

Questa situazione pero' evidenzia che dal forum forse ti aspetti troppo: noi possiamo suggerire soluzioni a situazioni specifiche e circoscritte, dare spunti, correggere errori; il tutto va poi ancora trasformato in soluzione solida e manutenibile.

Con tutti questi warning continua a frequentarci.

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

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Esportare dati":


Chi c’è in linea

Visitano il forum: Anthony47 e 48 ospiti