tijmen_4real
Gebruiker
- Lid geworden
- 20 apr 2005
- Berichten
- 338
Hoi,
Ik heb een bestand met een sub. Deze sub zoekt in (sub)mappen naar .xlsm-bestanden.
Uit deze bestanden haalt de macro data uit specifieke velden naar het (status)bestand.
Nu heb ik geprobeerd om er een conditie in te bouwen die deze data uitbreidt aan de hand van een veld (R43) in een gevonden bestand:
- Als er 1 staat, wordt er één array gevuld met data en in het statusbestand getoond.
- Als er 2 staat, worden er twee arrays, ....blabla
Werk helaas niet. Het lijkt erop dat ik geen if-else statement kan/mag toevoegen na de With, want hier gaat het fout (na F8 controle).
Wat doe ik verkeerd? En nog belangrijker: hoe kan ik dit wel bereiken?
Groet,
Tijmen
Ik heb een bestand met een sub. Deze sub zoekt in (sub)mappen naar .xlsm-bestanden.
Uit deze bestanden haalt de macro data uit specifieke velden naar het (status)bestand.
Nu heb ik geprobeerd om er een conditie in te bouwen die deze data uitbreidt aan de hand van een veld (R43) in een gevonden bestand:
- Als er 1 staat, wordt er één array gevuld met data en in het statusbestand getoond.
- Als er 2 staat, worden er twee arrays, ....blabla
Code:
Sub MergeAllWorkbooks()
Dim j As Long, jj As Long, it, fl, ar, ar1, ar2, ar3, ar4, ar5
'c00 = locatie waar naar bestanden te zoeken
c00 = "hier staat dan de locatie"
'constante screen updating uitschakelen
Application.ScreenUpdating = False
ReDim ar(0) As String
'mappen doorzoeken naar bestanden
With CreateObject("Scripting.FileSystemObject").getFolder(c00)
'submappen zoeken naar bestanden
For Each it In .subfolders
'zoeken naar bestanden
For Each fl In it.Files
'hit als bestand .xlsm extensie heeft, dan...
If LCase(Right(fl.Path, 5)) = ".xlsm" Then
ar(UBound(ar)) = fl.Path
ReDim Preserve ar(UBound(ar) + 1)
End If
Next fl
Next it
If UBound(ar) Then
ReDim ar1(UBound(ar) - 1, 22)
For j = 0 To UBound(ar) - 1
With GetObject(ar(j)).Sheets(1)
'als er 1 monster gevonden is: samplenr/leverancier/productnaam/productnr/chargenr/categorie/artnr intern/status
If .[R43].Value = "1" Then
ar2 = Array(.[D45].Value, .[H45].Value, .[O45].Value, .[AA45].Value, .[H50].Value, .[J105].Value, .[D189].Value, .[J173].Value)
ElseIf .[R43].Value = "2" Then
'als er 2 monsters gevonden zijn: samplenr/leverancier/productnaam/productnr/chargenr/categorie/artnr intern/status
ar2 = Array(.[D45].Value, .[H45].Value, .[O45].Value, .[AA45].Value, .[H50].Value, .[J105].Value, .[D189].Value, .[J173].Value)
ar3 = Array(.[D46].Value, .[H46].Value, .[O46].Value, .[AA46].Value, .[H51].Value, .[P105].Value, .[D189].Value, .[P173].Value)
ElseIf .[R43].Value = "3" Then
'als er 3 monsters gevonden zijn: samplenr/leverancier/productnaam/productnr/chargenr/categorie/artnr intern/status
ar2 = Array(.[D45].Value, .[H45].Value, .[O45].Value, .[AA45].Value, .[H50].Value, .[J105].Value, .[D189].Value, .[J173].Value)
ar3 = Array(.[D46].Value, .[H46].Value, .[O46].Value, .[AA46].Value, .[H51].Value, .[P105].Value, .[D189].Value, .[P173].Value)
ar4 = Array(.[D47].Value, .[H47].Value, .[O47].Value, .[AA47].Value, .[H52].Value, .[V105].Value, .[D189].Value, .[V173].Value)
ElseIf .[R43].Value = "4" Then
'als er 4 monsters gevonden zijn: samplenr/leverancier/productnaam/productnr/chargenr/categorie/artnr intern/status
ar2 = Array(.[D45].Value, .[H45].Value, .[O45].Value, .[AA45].Value, .[H50].Value, .[J105].Value, .[D189].Value, .[J173].Value)
ar3 = Array(.[D46].Value, .[H46].Value, .[O46].Value, .[AA46].Value, .[H51].Value, .[P105].Value, .[D189].Value, .[P173].Value)
ar4 = Array(.[D47].Value, .[H47].Value, .[O47].Value, .[AA47].Value, .[H52].Value, .[V105].Value, .[D189].Value, .[V173].Value)
ar5 = Array(.[D48].Value, .[H48].Value, .[O48].Value, .[AA48].Value, .[H53].Value, .[AB105].Value, .[D189].Value, .[AB173].Value)
End If
.Parent.Close 0
End With
Next j
'locatie bepalen waar data te plaatsen
ActiveWorkbook.Sheets(1).Cells(2, 1).Resize(UBound(ar1) + 1, 23) = ar1
End If
End With
End Sub
Werk helaas niet. Het lijkt erop dat ik geen if-else statement kan/mag toevoegen na de With, want hier gaat het fout (na F8 controle).
Wat doe ik verkeerd? En nog belangrijker: hoe kan ik dit wel bereiken?
Groet,
Tijmen
Laatst bewerkt: