Ik ben bezig met een script dat alle excel bestanden in een map in 1 bestand zet, maar 1 bestand moet niet meegenomen worden. Dat laatste is het probleem en ondanks een hoop zoekwerk en wat probeerwerk krijg ik het niet voor elkaar.
/ik ben dan ook geen vba kenner
Het script heb ik grootendeels van deze website:
http://www.rondebruin.nl
http://www.rondebruin.nl/copy3.htm
Met behulp van wat gegoogle heb ik al een paar dingen aangepast zodat de filters in de bestanden automatisch uit worden gezet en dat een eventuele read only met true beantwoord wordt. Dat werkt allemaal netjes, maar nu nog een toevoeging dat ik een bepaald bestand weg kan laten laten uit de "merge".
Dat bestand is een overview die wat tellers uit alle andere bestanden uitleest. Ik heb het al een andere extensie gegeven: *.xlsm. En toch leest het script het bestand in.
In onderstaand script staat:
FilesInPath = Dir(MyPath & "*.xls")
Wat eerst het volgende was
FilesInPath = Dir(MyPath & "*.xl*")
Ik had verwacht dat het daardoor de xlsm niet mee zou nemen, maar helaas. Het is voldoende als de xlsm niet meegenomen wordt, maar nog mooier als je de bestandsnaam (nog mooier) bestandnamen erin kunt verwerken. Dan kan het gewoon een .xls blijven.
/ik ben dan ook geen vba kenner
Het script heb ik grootendeels van deze website:
http://www.rondebruin.nl
http://www.rondebruin.nl/copy3.htm
Met behulp van wat gegoogle heb ik al een paar dingen aangepast zodat de filters in de bestanden automatisch uit worden gezet en dat een eventuele read only met true beantwoord wordt. Dat werkt allemaal netjes, maar nu nog een toevoeging dat ik een bepaald bestand weg kan laten laten uit de "merge".
Dat bestand is een overview die wat tellers uit alle andere bestanden uitleest. Ik heb het al een andere extensie gegeven: *.xlsm. En toch leest het script het bestand in.
In onderstaand script staat:
FilesInPath = Dir(MyPath & "*.xls")
Wat eerst het volgende was
FilesInPath = Dir(MyPath & "*.xl*")
Ik had verwacht dat het daardoor de xlsm niet mee zou nemen, maar helaas. Het is voldoende als de xlsm niet meegenomen wordt, maar nog mooier als je de bestandsnaam (nog mooier) bestandnamen erin kunt verwerken. Dan kan het gewoon een .xls blijven.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
| ' Change this to the path\folder location of your files. MyPath = "C:\bla bla bla" ' Add a slash at the end of the path if needed. If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" End If ' If there are no Excel files in the folder, exit. FilesInPath = Dir(MyPath & "*.xls") If FilesInPath = "" Then MsgBox "No files found" Exit Sub End If ' Fill the myFiles array with the list of Excel files ' in the search folder. FNum = 0 Do While FilesInPath <> "" FNum = FNum + 1 ReDim Preserve MyFiles(1 To FNum) MyFiles(FNum) = FilesInPath FilesInPath = Dir() Loop ' Set various application properties. With Application CalcMode = .Calculation .Calculation = xlCalculationManual .ScreenUpdating = False .EnableEvents = False End With ' Add a new workbook with one sheet. Set BaseWks = Workbooks.Add(xlWBATWorksheet).Worksheets(1) rnum = 1 ' Loop through all files in the myFiles array. If FNum > 0 Then For FNum = LBound(MyFiles) To UBound(MyFiles) Set mybook = Nothing On Error Resume Next Set mybook = Workbooks.Open(MyPath & MyFiles(FNum), ReadOnly:=True, UpdateLinks:=0) On Error GoTo 0 With ActiveSheet If .AutoFilterMode Then If .FilterMode Then .ShowAllData End If Else If .FilterMode Then .ShowAllData End If End If End With If Not mybook Is Nothing Then On Error Resume Next ' Change this range to fit your own needs. With mybook.Worksheets(1) FirstCell = "A26" Set sourceRange = .Range(FirstCell & ":" & RDB_Last(3, .Cells)) ' Test if the row of the last cell is equal to or greater than the row of the first cell. If RDB_Last(1, .Cells) < .Range(FirstCell).Row Then Set sourceRange = Nothing End If End With en nog een hoop |