Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro che copia dati da un file ad un altro

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 che copia dati da un file ad un altro

Postdi lupinlupin84 » 18/02/13 14:40

Ciao a tutti, avrei la necessità di creare una macro con la quale dovrei coparae alcune righe di un file chiamiamolo "alfa" e incollarle in un altro file excel chiamato "Beta". Nei dettagli, l'operazione da fare è:

Se il valore della colonna F del file Alfa è "ciao" allora devo copiare le celle da A ad H del file Alfa nelle celle da A ad H del file Beta, le celle della colonna I del file alfa nelle celle della colonan J del file beta, le celle da J a P del file Alfa nelle celle da O a U del file Beta, le celle della colonna Q ed R della colonna alfa nelle celle delle colonne X ed Y del file beta, le celle delle colonne V e W del file Alfa nelle celle delle coloneZ eAA del file Beta. (nota importante è che queste celle dovranno essere copiate nella prima riga vuota che incontra, essendo il file già una parte compilato).

Volevo chiedere, nel caso fosse possibile creare questa macro, che nomi devo dare a questi due file? Inoltre, quando dovrei utilizzare questa macro, dovrò avere tutti e due i file aperti? Per quanto riguarda la realizzazione della amcro, mi servirebbe un input iniziale, in modod a capire come copiare delel celle in un altro file, in modo da non stressarvio troppo. grazie.
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Sponsor
 

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 18/02/13 19:40

Penso con questa macro tu possa risolvere, inoltre il linguaggio è talmente chiaro che credo possa modificarlo da solo
Codice: Seleziona tutto
Sub CopiaDatiSeOr()
Dim nomeFile As String
percorso = Application.ActiveWorkbook.Path
nfile = "\" & "Alfa.xls"
        Application.Workbooks.Open percorso & nfile
        URA = Workbooks("Alfa.xls").Worksheets("Foglio1").Range("F" & Rows.Count).End(xlUp).Row
        For RRA = 1 To URA
            If UCase(Workbooks("Alfa.xls").Worksheets("Foglio1").Range("F" & RRA).Value) = "CIAO" Then
                URB = Workbooks("Beta.xls").Worksheets("Foglio1").Range("F" & Rows.Count).End(xlUp).Row + 1
                Workbooks("Alfa.xls").Worksheets("Foglio1").Range("A" & RRA & ":H" & RRA).Copy Destination:=Workbooks("Beta.xls").Worksheets("Foglio1").Range("A" & URB)
                Workbooks("Alfa.xls").Worksheets("Foglio1").Range("I" & RRA).Copy Destination:=Workbooks("Beta.xls").Worksheets("Foglio1").Range("J" & URB)
                Workbooks("Alfa.xls").Worksheets("Foglio1").Range("J" & RRA & ":P" & RRA).Copy Destination:=Workbooks("Beta.xls").Worksheets("Foglio1").Range("O" & URB)
                Workbooks("Alfa.xls").Worksheets("Foglio1").Range("Q" & RRA & ":R" & RRA).Copy Destination:=Workbooks("Beta.xls").Worksheets("Foglio1").Range("X" & URB)
                Workbooks("Alfa.xls").Worksheets("Foglio1").Range("V" & RRA & ":W" & RRA).Copy Destination:=Workbooks("Beta.xls").Worksheets("Foglio1").Range("Z" & URB)
            End If
        Next RRA
    Workbooks("Alfa.xls").Close savechanges:=False
End Sub



Ciao

N.B. La macro va inserita in un modulo del file "Beta.xls" e i due file (Alfa e Beta) devono stare nella stessa directory
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 19/02/13 12:55

Ciao, prima di tutto grazie per al risposta, volevo chiederti, quandod devo avviare la macro, devo avere entrambi i file aperti?
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 19/02/13 13:07

ho dimenticato a dirti che nel file beta ci sono diversi sheet e volevo incollare i dati copiati nello sheet dentro.
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 19/02/13 13:08

Assolutamente
solo il file Beta
abbini la macro a tasti di scelta rapida (tipo Ctrl+m)
e la macro fa tutto da sola
1) apre il file Alfa
2) copia quello che deve copiare accodando
3) chiude il file Alfa

ciao

Hai scritto mentre rispondevo
Se hai più fogli devi sapere in quale foglio incollare e inserirlo nella macro
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 19/02/13 13:16

ma quando incolla nel file beta, inizia a incollare dalla prima riga vuota? la directory dove inserire entrambi i file devo specificarla all'inizio della macro oppure non c'è bisogno?
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 19/02/13 13:31

Se i due file (alfa e beta) si trovano nella stessa directory non c'è bisogno di indicarla
in quanto il codice
percorso = Application.ActiveWorkbook.Path
rileva il percorso del file Beta e lo utilizza per trovare alfa
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 19/02/13 15:44

ciao, mi da un errore di debug in questa riga:

URB = Workbooks("Beta.xls").Worksheets("dentro").Range("F" & Rows.Count).End(xlUp).Row + 1

Volevo chiederti, come mai quando bisogna specificare in quali celle del file beta incollare quello che è stato copiato dal file alfa, tu scrivi questo Range("A" & URB) invece di specificare le celle come hai fatto per il comando copia?
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 19/02/13 16:33

l'errore dice subscribe out of range
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 19/02/13 22:16

Evdientemente non hai un foglio che si chiama "dentro".

La variabile URB conteggia le righe esistenti nel foglio del file Beta perché avevi specificato che potevano esserci altre righe che non andavano sovrascritte quindi
legge il file Alfa quando la condizione è rispettata copia da Alfa e incolla sulla prima riga libera del file Beta

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 19/02/13 23:12

eppure nel file beta ho uno sheet che si chiama dentro. volevo dire pute che l'excel che uso è in inglese, eprò avevo già proveduto a sostituire a foglio 1 con sheet 1.
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 20/02/13 00:32

Spiegami solo le operazioni che fai
e come si chiama il file aperto che ha la macro che attivi

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 20/02/13 11:11

il file che aperto che ha la amcro che attivo si chiama beta. Entrambi i file sono sul desktop.
Quello che faccio è: apro il file beta e lancio la macro, e si blocca in una cella del file alfa dandomi un errore di debug subscribe out of range
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 20/02/13 11:37

Secondo me hai dato al foglio un nome diverso da quello che hai scritto nella macro (magari hai messo una maiuscola o uno spazio dopo il nome)
es.: "Dentro" è diverso da "dentro" come è diverso "dentro " da "dentro"
prova ad usare questi file
scompattali dove vuoi ma insieme (anche sul desktop ma sposta altrove i tuoi file)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 20/02/13 12:02

utilizzando i file che mi hai dato e quindi aprendo il file beta e lanciando la macro, viene eseguito tutto alla perfezione. Ora rinomino gli sheet utilizzando gli stessi tuoi nomi e vedo che succede.
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 20/02/13 12:36

mi da lo stesso errore ,a anche se ho rinominato i fogli ....secondo me è un problema del file da dove copio i dati...se può interessarti,il file Alfa ha le prime due righe di intestazione, nella colonna F ci sono diversi nomi e celle vuote. casomai privatamente potrei farti vedere questo file Alfa.
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 20/02/13 14:52

Ho provato in questo modo: ho utilizzato il mio file alfa e il tuo file beta e la macro ha funzionato. Utilizzando invece il tuo file alfa e il mio file beta, non ha funzionato,dandomi semrpe lo stesso errore di prima. Ho eliminato tutti gli sheet del file beta lasciando solo solo lo sheet Foglio1 , ma nulla non va. possof arti vedere il file privatamente?
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 21/02/13 12:50

Ciao, ho risolto il problema, praticamente era il formato del file beta che non andava. Volevo chiederti, siccome oltre ad effettuare quelle operazioni che ti avevo scritto, devo farne delle altre e precisamente dovrei fare: dovrei copiare delle celle del file alfa (sempre sheet 1) e incollarle nel file beta (sempre sheet dentro) e le condizioni devono essere :
1) che nella colonna G ci sia scritto Puglia Sud
2) che nella stessa riga la cella della colonna I sia vuota
3) che nella stessa riga nella colonna K non ci sia scritto ADD_DP_ULL

se queste condizioni sono verificate allora deve copiare sempre le solite cell da alfa e incollarle sempre nelle solite celle del file beta , sempre a partire dall'ultima riga vuota. Utilizzando il codice che hai scritto tu e, modificandolo, ho scritto questo codice, ma non va, praticamente non fa nulla.

Codice: Seleziona tutto
 URA = Workbooks("query.xls").Worksheets("Sheet1").Range("G" & Rows.Count).End(xlUp).Row
            For RRA = 1 To URA
                If (Workbooks("query.xls").Worksheets("Sheet1").Range("G" & RRA).Value) = "Puglia Sud" & (Workbooks("query.xls").Worksheets("Sheet1").Range("K" & RRA).Value) <> "ADD_DP_ULL" & (Workbooks("query.xls").Worksheets("Sheet1").Range("I" & RRA).Value) = "" Then
                    URB = Workbooks("monitoring.xls").Worksheets("dentro").Range("G" & Rows.Count).End(xlUp).Row + 1
                    Workbooks("query.xls").Worksheets("Sheet1").Range("A" & RRA & ":H" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("A" & URB)
                    Workbooks("query.xls").Worksheets("Sheet1").Range("I" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("J" & URB)
                    Workbooks("query.xls").Worksheets("Sheet1").Range("J" & RRA & ":P" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("O" & URB)
                    Workbooks("query.xls").Worksheets("Sheet1").Range("Q" & RRA & ":R" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("X" & URB)
                    Workbooks("query.xls").Worksheets("Sheet1").Range("V" & RRA & ":W" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("Z" & URB)
                End If
            Next RRA


EDIT: Inserire sempre il codice di macro e formule all'interno del Tag Code dell'editor
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Re: macro che copia dati da un file ad un altro

Postdi Flash30005 » 21/02/13 13:03

La tua macro ha la sintassi errata la condizione di if... con and devi usare "And" e non & (e commerciale) in quanto quest'ultima unisce un testo mentre "And" (o Or) sono le funzioni di condizione E o O.
quindi modificando la macro si avrà qualcosa del genere
Codice: Seleziona tutto
URA = Workbooks("query.xls").Worksheets("Sheet1").Range("G" & Rows.Count).End(xlUp).Row
 For RRA = 1 To URA
 If UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("G" & RRA).Value) = "PUGLIA SUD" And UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("K" & RRA).Value) <> "ADD_DP_ULL" And Workbooks("query.xls").Worksheets("Sheet1").Range("I" & RRA).Value = "" Then
 URB = Workbooks("monitoring.xls").Worksheets("dentro").Range("G" & Rows.Count).End(xlUp).Row + 1
 Workbooks("query.xls").Worksheets("Sheet1").Range("A" & RRA & ":H" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("A" & URB)
 Workbooks("query.xls").Worksheets("Sheet1").Range("I" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("J" & URB)
 Workbooks("query.xls").Worksheets("Sheet1").Range("J" & RRA & ":P" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("O" & URB)
 Workbooks("query.xls").Worksheets("Sheet1").Range("Q" & RRA & ":R" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("X" & URB)
 Workbooks("query.xls").Worksheets("Sheet1").Range("V" & RRA & ":W" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("Z" & URB)
 End If
 Next RRA


Noterai che ho aggiunto la funzione Ucase per evitare di avere il testo scritto in maiuscolo/minuscolo in questo caso il confronto viene effettuato considerando tutte le stringhe in maiuscolo.

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: macro che copia dati da un file ad un altro

Postdi lupinlupin84 » 22/02/13 17:22

Ciao, ha funzionato alla grande. dovrei copiare delle celle del file alfa (sempre sheet 1) e incollarle nel file beta (sempre sheet dentro) e le condizioni devono essere :
1) che nella colonna G ci sia scritto "Lombardia Est" oppure "Lombardia Ovest" oppure "Torino Valle d Aosta" oppure "Milano city"
2) che nella stessa riga la cella della colonna I sia vuota
3) che nella stessa riga nella colonna K non ci sia scritto ADD_DP_ULL

Se queste condizioni sono verificate allora deve copiare sempre le solite cell da alfa e incollarle sempre nelle solite celle del file beta , sempre a partire dall'ultima riga vuota. utilizzando il codice che hai scritto tu e modificandolo ho scritto questo codice, ma non va, praticamente copia delle celle ma anche quelle dove in corrispondenza della colonna I le celle non sono vuote e dove in corrispondenza della colonna K in queste celle c'è scritto ADD_DP_ULL

URA = Workbooks("query.xls").Worksheets("Sheet1").Range("G" & Rows.Count).End(xlUp).Row
For RRA = 1 To URA
If UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("G" & RRA).Value) = "LOMBARDIA EST" Or UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("G" & RRA).Value) = "LOMBARDIA ovest" Or UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("G" & RRA).Value) = "MILANO CITY" Or UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("G" & RRA).Value) = "TORINO VALLE D AOSTA" And UCase(Workbooks("query.xls").Worksheets("Sheet1").Range("K" & RRA).Value) <> "ADD_DP_ULL" And Workbooks("query.xls").Worksheets("Sheet1").Range("I" & RRA).Value = "" Then
URB = Workbooks("monitoring.xls").Worksheets("dentro").Range("G" & Rows.Count).End(xlUp).Row + 1
Workbooks("query.xls").Worksheets("Sheet1").Range("A" & RRA & ":H" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("A" & URB)
Workbooks("query.xls").Worksheets("Sheet1").Range("I" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("J" & URB)
Workbooks("query.xls").Worksheets("Sheet1").Range("J" & RRA & ":P" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("O" & URB)
Workbooks("query.xls").Worksheets("Sheet1").Range("Q" & RRA & ":R" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("X" & URB)
Workbooks("query.xls").Worksheets("Sheet1").Range("V" & RRA & ":W" & RRA).Copy Destination:=Workbooks("monitoring.xls").Worksheets("dentro").Range("Z" & URB)
End If
Next RRA
lupinlupin84
Utente Junior
 
Post: 32
Iscritto il: 02/02/11 14:58

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "macro che copia dati da un file ad un altro":


Chi c’è in linea

Visitano il forum: saxas e 10 ospiti