Ho intenzione di condurre una macro che apre una cartella di lavoro dal path specificato e loop attraverso i fogli di lavoro che hanno in particolare i nomi "Januari, Februari, Marte" per dedurre il valore da C34. C34 ha un valore registrato each volta, quindi non dovrebbe cambiare. Tuttavia voglio copiarlo nel foglio di lavoro corrente, where il primo objective dovrebbe essere a AA73, il secondo a AA74 ecc. Il mio codice è
Sub Test() Dim myHeadings Dim i As Long Dim path As String path = "C:\pathtofile\file.xlsx" Dim currentWb As Workbook Set currentWb = ActiveWorkbook Dim openWb As Workbook Set openWb = Workbooks.Open(path) Dim openWs As Worksheet myHeadings = Array("Januari", "Februari", "Mars") For i = 0 To UBound(myHeadings) Set openWs = openWb.Sheets("&i") currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value Next i End Sub
Tuttavia il compilatore dice che l'indice è fuori field alla fila con
Set openWs = openWb.Sheets("&i")
Qui ho cercato di fare "io", io, e io tra le altre cose, ma non sono cambiate. Inoltre ho cercato di usare "ThisWorkbook" invece di "ActiveWorkbook" ma non ne ha aiutato neanche. Qualcuno ha un input su come realizzarlo in modo più appropriato?
EDIT: Adattamento alla risposta di Dave, funziona per importre i fogli. Tuttavia riceve un errore in:
currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value
Dove ottengo l'errore di automazione -2147221080 (800401a8) a detto snippet di codice.
Hai già messo i nomi dei fogli in un arrays, per cui puoi call il nome del foglio dall'arrays come:
Set openWs = openWb.Sheets(myHeadings(i))