J'ai une macro qui ouvre un classeur, copie des données pendant 24 heures dans un tableau à l'aide de VLOOKUP puis colle le tableau dans le classeur principal, puis revient au classeur ouvert et copie un autre ensemble de données dans le tableau. Malheureusement, après avoir copié le premier ensemble de données, j'obtiens "Indice hors limites". Je sais que la raison est que macro tente d'activer un classeur qui ne peut pas trouver même si elle est déjà ouvertRéactivation du classeur précédent dans la boucle for VBA
Sub main()
Dim fname As String, pathfile As String, year As Long, month As Long, day As Long
Dim version As Long, nazwa_raportu As String, miesiac As String, dzien As String
Dim hour As Long, godzina As Long
Dim Arr(1 To 10) As String, Data(0 To 23) As Long
Dim i As Long, fullname As String
Arr(1) = "somename1"
Arr(2) = "somename2"
Arr(3) = "somename3"
Arr(4) = "somename4"
Arr(5) = "somename5"
Arr(6) = "somename6"
Arr(7) = "somename7"
Arr(8) = "somename8"
Arr(9) = "somename9"
Arr(10) = "somename10"
For month = 1 To 12
If month < 10 Then
miesiac = "0" & month
Else
miesiac = month
End If
For day = 1 To 31
If day < 10 Then
dzien = "0" & day
Else
dzien = day
End If
Do
pathfile = "C:\Users\M\Documents\Reports\XXXX\ARDR\"
fname = pathfile & miesiac & "_" & dzien & "_" & ".xls"
' if file not present skip
If Len(Dir(fname)) = 0 Then
Exit Do
End If
Workbooks.Open (fname)
fullname = Application.ActiveWorkbook.fullname
For i = 1 To 10
For hour = 0 To 23
Data(hour) = Application.WorksheetFunction.VLookup(Arr(i), Range(Cells(1, 1), Cells(100, 80)), 4 + 3 * hour, False)
Next hour
For godzina = 0 To 23
Workbooks("main.xlsm").Activate
Cells(3 + godzina * day, 1 + i * 2) = Dane(godzina)
Next godzina
Workbooks(fullname).Activate
Next i
Loop While False
Next day
Next month
Comment puis-je réactiver classeur que j'ai ouvert avant la boucle
For i = 1 To 10
Bien que Je suis toujours dans cette boucle?
Vous pouvez faire 'Set srcWB = Workbooks (source nom de classeur)' et 'Set trgWB = Workbooks (cible nom du classeur) 'de cette façon vous pouvez basculer en arrière. – ian0411