Condividi:        

[EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

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 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

Postdi annina78 » 04/02/15 14:18

Buongiorno a tutti, premetto di essere un'utilizzatrice di macro poco esperta (per lo più registro e poi modifico) quindi perdonate gli strafalcioni!
Ho creato una macro che va ad aprire diversi file (file 1, file 2,...) uno alla volta, copia dei dati sparsi in questo file in una sola riga e poi copia questa riga in un file di riepilogo.
Il problema è che voglio, in ordine,
1copiare i dati,
2chiudere il file origine senza salvare le modifiche che ho fatto
3 copiare i dati nel file di ripilogo
ma se do il comando

ActiveWorkbook.Close savechanges:=False

i dati con decimali incollati nel file di riepilogo non hanno più le virgole!!! (tipo 7,5675 diventa 75675).
Se invece non faccio chiudere il file va tutto bene....


ps: Ho inserito il comando
Application.DisplayAlerts = False
prima di chiudere il file in modo che non mi chieda ogni volta se voglio salvare "una grande quantità di appunti per utilizzarla dopo" ma non influisce sul risultato.
annina78
Newbie
 
Post: 2
Iscritto il: 04/02/15 13:59

Sponsor
 

Re: [EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

Postdi ricky53 » 04/02/15 14:47

Ciao Annina,
prima di tutto benvenuta nel nostro forum.

Puoi allegare la macro .. utilizza i TAG per il codice (Pulsante "Code" sopra la finestra di risposta)

Quali dati vengono copiati dai vari file?
Dove vengono copiati?
Quali dati vanno copiati nel foglio "Riepilogo"?

Il codice ci aiuterà ma le spiegazioni sono "NECESSARIE" e ... risolutive.
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: [EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

Postdi annina78 » 04/02/15 15:33

Grazie del benvenuto! Spero di riuscire a spiegarmi un po ' meglio...

Allora la macro è questa (fatevi un pure un po' di risate.... :D )
Codice: Seleziona tutto
Sub Trasferimento_Dati()
On Error Resume Next


 ChDir "C:\Users\annina\Desktop\dati 2014"
             
‘APRE I FILE E FA GIRARE PER OGNUNO LA MACRO TRASFERIMENTO
     
Workbooks.Open Filename:="C:\Users\annina\Desktop\dati 2014\impianto1 2014.xlsx"
        TRASFERIMENTO

Workbooks.Open Filename:="C:\Users\annina\Desktop\dati 2014\impianto2 2014.xlsx"
        TRASFERIMENTO


End Sub



Sub TRASFERIMENTO()
   
‘METTE I DATI SPARSI NEL FILE SU UNA SOLA RIGA
 
[….]       
       
               
‘SELEZIONA LE CELLE CON I DATI DA COPIARE
        Range("UGO").Select
        Selection.Offset(0, 158).Select
        Range(ActiveCell, "UGO").Select
        Selection.Name = "DATI"
        Range("DATI").Select
        Selection.Copy
     
       Application.DisplayAlerts = False

‘ CHIUDE IL FILE IMPIANTOX
      ActiveWorkbook.Close savechanges:=False
     
‘ APRE IL FILE DI RIEPILOGO E VA NEL FOGLIO DOVE INCOLLARE I DATI

   Windows("RIEPILOGO.xlsm").Activate
    Sheets("RIEP").Select

‘ INCOLLA I DATI
      Range("INIZIO").Select
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
     ActiveSheet.Paste
 
  Application.CutCopyMode = False
   
  End Sub



I dati che voglio copiare sono semplicemente dei testi e dei numeri (formato numero con decimali e non) risultato di medie o somme di altri numeri. Vengono copiati prima in una sola riga del file origine (in modo da metterli tutti insieme in ordine e senza formule), successivamente vengono copiati e incollati nel file riepilogo dove si crea una tabella ordinata.
In pratica devo pescare dei dati di funzionamento dai registri di singoli impianti e metterli in una tabella unica.
Ho notato che, se interrompo la macro e incollo i dati a mano senza chiudere il file di origine i dati incollati sono giusti, se invece lo chiudo mi toglie le virgole ( ma non i decimali dopo :eeh: cioè 10,999999 diventa 10999999 mentre i numeri senza decimale restano uguali 10 resta 10 )....
ps ho tolto la parte dove "sistema" i dati perchè non mi da problemi.

Grazie dell'aiuto!!!
;)
annina78
Newbie
 
Post: 2
Iscritto il: 04/02/15 13:59

Re: [EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

Postdi ricky53 » 04/02/15 16:08

Ciao,
conviene avere un file di esempio e che tu ci descriva un solo passaggio di Copia/Incolla

Focalizziamoci sulla macro "Trasferimento"
prima passo da fare selezionare un intervallo, quale e da quale foglio?
Nel file "Riepilogo" in quale foglio?
Quello di nome "Inizio" ?
Va individuata la riga su cui copiare
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: [EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

Postdi Flash30005 » 05/02/15 00:06

Ciao Annina79 e benvenuta nel Forum

Ti posto una macro già collaudata più volte
(bisogna solo adattarla alle tua struttura dei dati che, non conoscendoli non posso intervenire direttamente)

Codice: Seleziona tutto
Sub ElencoFileXls()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
If Dir(perc & "\ArchivioXls", vbDirectory) = "" Then
    MkDir (perc & "\ArchivioXls")
End If
WB1 = ThisWorkbook.Name
Ws1 = "Foglio1"  '<<<<<<<<<<< nome del foglio che importerà i dati dai file
Worksheets(Ws1).Select
Range("A1").Select
  ElencoFile Direct:=perc, Estens:="*.xls*", Inicell:=ActiveCell
    Columns("A:AZ").EntireColumn.AutoFit  '<<<< aggiusta la larghezza delle colonna da A a AZ in base al contenuto delle celle
    Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
  Dim i As Integer, f As String
  ChDir Direct
  f = Dir(Estens)
  If f = "" Then Exit Sub
  While f <> ""
    If f <> ThisWorkbook.Name Then
        Application.Workbooks.Open perc & "\" & f
        URF = Workbooks(f).Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row  '<<<< Al posto di "Foglio1" dovrai mettere "Dati"
        URR = Workbooks(WB1).Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row  '<<<< calcolo dell'ultima riga con dati in colonna A
        Workbooks(f).ActiveSheet.Rows("1:" & URF).Copy Destination:=Workbooks(WB1).Worksheets(Ws1).Range("A" & URR + 1) '<<< range da adattare (così come è fatto copia tutte le righe piene
        Workbooks(f).Close savechanges:=False
        FileCopy perc & "\" & f, perc & "\ArchivioXls\" & f  '<<<<< copia il file processato nella sottocartella ArchivioXls
            Kill perc & "\" & f  '<<<<<< elimina il file dalla cartella origine per evitare di importare di nuovo gli stessi dati
    End If
    f = Dir
  Wend
End Sub


Lanciando la macro "ElencoFileXls"
1) verrà aperto un file di Excel (file dati-origine) contenuto nella stessa cartella del file con macro (file Riepilogo)
2) importerà i dati indicati nella riga-codice con <<< range dati (da adattare) attualmente è un insieme di righe
3) chiuderà il file dati origine senza salvarlo
4) sposta il file-dati origine processato in una sottocartella chiamata ArchivioXls (cartella che la stessa macro crea se non esiste)
5) se esistono altri file xls nella cartella origine, ricomincia dal punto 1)

Per il foglio Riepilogo si dovrà fare un'apposita macro che trascrivi quanto importato precedentemente nel "foglio1"
ma per fare questo bisogna sapere dove sono posti i dati nel Foglio1 e sapere dove devono essere inseriti nel foglio "Riepilogo"

Ciao
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: [EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE

Postdi Anthony47 » 05/02/15 01:38

In una situazione normale avrei detto "sostituisci la tua macro con questa"
Codice: Seleziona tutto
Sub Trasferimento_Dati()
'''On Error Resume Next    'Abolita, se non spieghi perche' serve
'
Workbooks.Open Filename:="C:\Users\annina\Desktop\dati 2014\impianto1 2014.xlsx"
TRASFERIMENTO
Workbooks.Open Filename:="C:\Users\annina\Desktop\dati 2014\impianto2 2014.xlsx"
TRASFERIMENTO
End Sub

Sub TRASFERIMENTO()
   
'METTE I DATI SPARSI NEL FILE SU UNA SOLA RIGA
 
[….]       
               
'SELEZIONA LE CELLE CON I DATI DA COPIARE
       Range("UGO").Resize(1,158).Copy _
      Destination:=Workbooks("RIEPILOGO.xlsm").Sheets("RIEP").Range("INIZIO").End(xlDown).Offset(1, 0)
' CHIUDE IL FILE IMPIANTOX
       Application.DisplayAlerts = False
       ActiveWorkbook.Close savechanges:=False
       Application.DisplayAlerts = True
End Sub


Tuttavia il codice che hai allegato sembra incompleto (vedasi quelle "[...]" e nemmeno aderente all' originale (vedasi uso di caratteri che dovrebbero generare "Errore di compilazione" nel momento che vengono usati) e le anomalie che segnali non sono legate alla macro ma ad altro (vedasi la perdita del segno di decimale); per cui mi associo alla richiesta fatta da Ricky di avere un esempio di ogni tipo di file coinvolto.

Vorrei anche capire se stiamo a parlare di aprire N file che hanno sempre lo stesso nome oppure se sono un numero ignoto di file tutti nella stessa directory e hanno tutti la stessa struttura.

Comunque valuta anche l' utilizzo della macro di Flash (vedi sopra).

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


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL 2010]MACRO ERRORE NEL COPIARE DATI TRA DUE FILE":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti