› Excel e gli applicativi Microsoft Office › Macro per copiare dati da un file ad un altro
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
-
AutoreArticoli
-
Ciao a tutti,Avrei bisogno di una mano siccome sono un novizio con vba.Dovrei incollare dei dati da un file ad un altro.Quello da cui copiare: hai i dati che son disposti dalla colonna C a quella J per righe successive.Quello in cui copiarli: sono ordinati in maniera successiva sulla stssa riga. (es. copio C4:J4 nell'altro file in B6022:I6022, poi C5:J5 -> J6022:Q6022)Il problema è che nel file dove vanno incollati devono occupare non l'ultima riga ma quella successiva vuota.I dati sono a valore quindi non vi sono problemi di riferimenti dovuti a formule.Grazie per la disponibilitàCiaoHai Provato a scrivere qualcosa oppure niente?Nel caso manda quello che hai scritto e poi cerchiamo di correggerlo.Per scrivere non nell'ultima riga ma quella successiva vuota.ti consiglio di studiareRows (che ti dà il numero di righe)end (da usare con xlup partendo dall'ultima cella del foglio)offsetCiaoLucaCiao,grazie della risposta.Io ho provato a scrivere questo partendo da una macro registrata.Tuttavia dopo la prima riga copiata correttamente, dalla seconda vi si presenta un errore
Sub TransferData()
'transfer stuff from this workbook to workbook 2
Windows("Daily.csv").Activate
Range("C4:J4").Select
Selection.Copy
Windows("Govies DB.xlsm").Activate
Range("B2").Select
Selection.End(xlDown).Select
ActiveSheet.Paste
For i = 1 To 25
Windows("Daily.csv").Activate
ActiveCell.Offset(i, 0).Range("C4:J4").Select
Selection.Copy
Windows("Govies DB.xlsm").Activate
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Range("B2").Select
Next i
End Sub
-
Questa risposta è stata modificata 7 anni, 8 mesi fa da
albatros54.
Ciao1) non usare windows(che è la finestra di visualizzazione), usa workbook (che è la cartella excel ovvero il file).2) non serve selezionareinvece diWindows("Daily.csv").Activate
Range("C4:J4").Select
Selection.Copy
usaWorkbooks("Daily.csv").Sheets(1).Range("C4:J4").Copy
3) nella rigaActiveCell.Offset(i, 0).Range("C4:J4").Select
cosa volevi fare?io penso che tu volessi selezionare il Range C5:J5 ovvero la riga sottoC4:J4
nel casoWorkbooks("Daily.csv").Sheets(1).Range("C4:J4").Offset(i, 0).TuaAzione
4)Windows("Govies DB.xlsm").Activate
Selection.End(xlToRight).Select
Se usiEnd(xlToRight)
Excel si posiziona sull'ultima cella occupata. ricordati di aggiungere un offset di una colonna .offset(0,1) altrimenti ti sovrascrive l'ultima cella5) attenzione ad usare Activecell con un offset variabile e un select al secondo giro la cella attiva è gia nella riga inferiore e ti sposti di ulteriore di due righe in sotto.6) io di solito i programmi li scrivo usando i select per fare debug e poi li tolgoWorkbooks("Daily.csv").Sheets(1).Range("C4:J4").Offset(i, 0).select
Workbooks("Daily.csv").Sheets(1).Range("C4:J4").Offset(i, 0).copy
in modo da vedere se ciò che ho previsto copiare lo seleziona correttamente (ma non faccio riferimento all cella selezionata).7) nella seconda parte manca il paste.8) oltre a copiare (se ti venisse comodo potresti anche assegnare un valoreCon istruzioni del tipo:DB.xlsm").Sheets("pippo").Range("B2").end(xldown).offset(i,j).Value=Workbooks("Daily.csv").Sheets(1).Range("C4").
Se la correlazione tra le celle di origine e quelle di arrivo è semplice può convenire.Prova a modificare e dimmi cosa succede.CiaoLuca -
Questa risposta è stata modificata 7 anni, 8 mesi fa da
-
AutoreArticoli
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)