Cambiare la destinazione dove incollare ad ogni ciclo FOR

Salve,
sto cercando di scrivere una macro che mi permetta di incollare determinate celle da tutti i fogli di un file .xlsx in un unico foglio di un altro file .xlsx
Vorrei usare un ciclo FOR che copi e incolli da un foglio dopo l'altro, ma mi scontro con il problema della destinazione, ossia avendo settato come variabile il foglio di origine, non so come fa variare la destinazione (per la quale userei STEP). Qualcuno sa aiutarmi? Grazie!

La macro adesso è questa:

Sub acquisisci()
'Riferimento a file iniziale
Dim wb0 As Excel.Workbook
Set wb0 = ActiveWorkbook
    
'Gestione apertura file excel1
Dim a As Excel.Application
Dim wb1 As Excel.Workbook

'Apri Excel1
Set a = New Excel.Application

'Apri File1
File1 = "C:\[...].xlsx"
Set wb1 = a.Workbooks.Open(File1)

For x = 1 To 6

wb1.Worksheets(x).Unprotect

wb1.Worksheets(x).Range("C4:C40").Copy
ActiveSheet.Paste Destination:=wb0.Worksheets(2).Range("A1")
wb1.Application.CutCopyMode = False

wb1.Worksheets(x).Range("U4:W40").Copy
ActiveSheet.Paste Destination:=wb0.Worksheets(2).Range("B1")
wb1.Application.CutCopyMode = False

Next x

'Chiusura Excel1
wb1.Close SaveChanges:=False
a.Quit
End Sub
 

Informazioni domanda


Ultimo aggiornamento febbraio 22, 2018 Visualizzazioni 636 Si applica a:
Risposta
Il punto è che devo ciclare il foglio da cui copio i suddetti range, per copiare tutti i dati da un foglio.

E al contempo ogni volta che incollo vorrei modificare il range di destinazione (per non sostituire i dati incollati nel ciclo precedente).

Insomma,
copia range a da fogliox1 a foglioy1 nel range b 
copia range a da fogliox2 a foglio y1 nel range c
...


Trova l'ultima riga dellle colonne del foglio dove incolli. Qui riferito alla colonna A:

Dim lRiga As Long

Dim lng As Long

'.....

'.....

For lng = 1 to 6

lRiga = ActiveSheet.Range("A" & Rows.Count).End(xlup).Row +1

wb1.Worksheets(x).Range("C4:C40").Copy

ActiveSheet.Range("A" & lRiga).PasteSpecial

Next

Qui trovi due files di esempio. FileDati.xls che contiene 3 fogli con dati in C4:C40/U4:W40 e FileStorico.xls con una macro che prende i dati dai tre fogli di FileDati.xls e li accoda nel suo Foglio1:

http://www.maurogsc.eu/esempiforum12/storicodaaltrofile.zip

I due files, nell'esempio, devono trovarsi nella stessa Directory. Modifica path, nome dei file, numero di fogli, nomi dei fogli e dei files con i tuoi.

Dai un'occhiatina al codice e se hai problemi siamo (quasi) sempre qui per chiarimenti.

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Risposta
Funziona perfettamente, grazie mille.

Adesso me la studio per capire ogni parte, sono veramente ignorante di VBA.
 
Se posso disturbarti per finalità didattiche, come mai anche Ing, che se non sbaglio è la variabile che individua il foglio, è definita come "long" ?


Personalmente non utilizzo mai (quasi mai) le variabili Integer. Tutto qui. 

Grazie a te per il cortese riscontro. Buona giornata e buon lavoro.

--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.