Hallo,
zur Validierung mehrerer Exceldateien in einem Ordner schiebe ich zunächst alle Dateien in ein 1D Array. Das funktioniert schon mal
Im Anschluß arbeite ich diese "Liste" ab und öffne die Dateien nacheinander um alle Daten einer bestimmten Spalte in ein mehrdimensionales Array zu schreiben.
Dabei soll für jede Datei eine Spalte entstehen.
Nun kommt erschwerend hinzu, daß es mitunter Dateien gibt, die zusammen gehören und daher auch zusammen in der selben Spalte landen sollen.
Zu erkennen sind diese Dateien an den ersten 5 Zeichen im Dateinamen.
Testhalber habe ich 14 Dateien im Ordener von den jeweils 2 susammen gehören - somit sollte ein Array entstehen, das 7 Spalten und genauso viele Zeilen aufweist wie die beiden zusammen gehörenden Dateien benutzen (z.B. 1. Datei 6 Zeilen + 2. Datei 33 Zeilen = 39). Diese sollten im übrigen bei allen Dateien gleich sein. Ansonsten wäre dies schon eine Abbruchbedingung für das ganze Script.
Mit dem nachfolgenden Code bin ich heute schon mal ne ganze Ecke weitergekommen, doch nun hänge ich schon den ganzen Nachmittag fest an verschiedenen Fehler, die mir die Kontrollausgaben ('debug.print) zeigen.
Die Logik scheint einigermaßen zu stimmen, jedoch ist mein usedCells-Wert bei jeder 2. Datei bzw. wenn die Prüfung auf gleiche Dateien "fehl schlägt" um einiges zu hoch - 66!
Dies wäre der Wert der benutzen Zellen in der jeweils 2. Datei.
Ich nehme an, daß daher auch das Array nicht wie gewünscht gefüllt wird - die Array-Ausgaben am Schluss des Codes ziegen 6 Werte gefolgt von 33 "leere" und anschließend im weiteren Verlauf wieder 6 Werte. Diese 6 Werte sind jedoch richtig.
Ganz zum Schluss, wenn alle Dateien durch sind bekomme dann noch den Fehler, daß er die Datei ~... nicht öffnen kann.
Dies entspricht der ersten Datei die geöffnet wurde und scheinbar nicht richtig geschlossen wird.
Ich wür mich sehr freuen wenn mir jemand auf die Sprünge helfen kann.
Ziel des ganzen ist letztlich, daß in jeder Spalte die gleichen Werte in der gleichen Reihenfolge wie in der Nachbarspalte stehen.
Ist dies nicht der Fall wäre das die 2. Abbruchbedingung.
Grüße
opiwahn
zur Validierung mehrerer Exceldateien in einem Ordner schiebe ich zunächst alle Dateien in ein 1D Array. Das funktioniert schon mal

Im Anschluß arbeite ich diese "Liste" ab und öffne die Dateien nacheinander um alle Daten einer bestimmten Spalte in ein mehrdimensionales Array zu schreiben.
Dabei soll für jede Datei eine Spalte entstehen.
Nun kommt erschwerend hinzu, daß es mitunter Dateien gibt, die zusammen gehören und daher auch zusammen in der selben Spalte landen sollen.
Zu erkennen sind diese Dateien an den ersten 5 Zeichen im Dateinamen.
Testhalber habe ich 14 Dateien im Ordener von den jeweils 2 susammen gehören - somit sollte ein Array entstehen, das 7 Spalten und genauso viele Zeilen aufweist wie die beiden zusammen gehörenden Dateien benutzen (z.B. 1. Datei 6 Zeilen + 2. Datei 33 Zeilen = 39). Diese sollten im übrigen bei allen Dateien gleich sein. Ansonsten wäre dies schon eine Abbruchbedingung für das ganze Script.
Mit dem nachfolgenden Code bin ich heute schon mal ne ganze Ecke weitergekommen, doch nun hänge ich schon den ganzen Nachmittag fest an verschiedenen Fehler, die mir die Kontrollausgaben ('debug.print) zeigen.
Die Logik scheint einigermaßen zu stimmen, jedoch ist mein usedCells-Wert bei jeder 2. Datei bzw. wenn die Prüfung auf gleiche Dateien "fehl schlägt" um einiges zu hoch - 66!
Dies wäre der Wert der benutzen Zellen in der jeweils 2. Datei.
Ich nehme an, daß daher auch das Array nicht wie gewünscht gefüllt wird - die Array-Ausgaben am Schluss des Codes ziegen 6 Werte gefolgt von 33 "leere" und anschließend im weiteren Verlauf wieder 6 Werte. Diese 6 Werte sind jedoch richtig.
Ganz zum Schluss, wenn alle Dateien durch sind bekomme dann noch den Fehler, daß er die Datei ~... nicht öffnen kann.
Dies entspricht der ersten Datei die geöffnet wurde und scheinbar nicht richtig geschlossen wird.
Ich wür mich sehr freuen wenn mir jemand auf die Sprünge helfen kann.
Ziel des ganzen ist letztlich, daß in jeder Spalte die gleichen Werte in der gleichen Reihenfolge wie in der Nachbarspalte stehen.
Ist dies nicht der Fall wäre das die 2. Abbruchbedingung.
Visual Basic:
Option Explicit
Dim oFSO, oFolder, oFile
Dim oExcel, oWorkbook1, oWorkbook2
Dim usedCells, usedCellsAdd, countFiles
Dim tmpBNo, strBNo, Item
Dim aFiles(), aBNo()
Dim f, g, i, j, k
usedCells = 0
usedCellsAdd = 0
countFiles = 0
tmpBNo = ""
strBNo = ""
Item = ""
f = 0
g = 0
i = 0
j = 0
k = 0
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oExcel = WScript.CreateObject("Excel.Application")
Set oFolder = oFSO.GetFolder("C:\GMD\input\RAW\")
countFiles = oFolder.Files.count
If countFiles < 1 then Msgbox("no files found")
ReDim aFiles(countFiles - 1)
For each oFile In oFolder.Files
aFiles(f) = oFile.Name
f = f + 1
next
For i = LBound(aFiles) to UBound(aFiles)
oExcel.Visible = False
Set oWorkbook1 = oExcel.Workbooks.Open(oFolder & "\" & aFiles(i))
'debug.print
msgbox "1. " & oWorkbook1.name
if StrComp(Left(aFiles(i),5), Left(aFiles(i + 1),5),1) = 0 Then
Set oWorkbook2 = oExcel.Workbooks.Open(oFolder & "\" & aFiles(i + 1))
'debug.print
msgbox "2. " & oWorkbook2.name
usedCellsAdd = 0
usedCellsAdd = oWorkbook2.Sheets("Quantitave Results").UsedRange.Rows.Count - 1
oWorkbook2.saved = True
oWorkbook2.close
End If
usedCells = oWorkbook1.Sheets("Quantitave Results").UsedRange.Rows.Count - 1
usedCells = usedCells + usedCellsAdd
'debug.print
MsgBox usedCells
Redim aBNo(usedCells - 1,UBound(aFiles))
For j = 0 to usedCells - 1
tmpBNo = oWorkbook1.Sheets("Quantitave Results").Range("F" & j + 2).value
strBNo = Mid(tmpBNo, 12, 7)
aBNo(j,k) = strBNo
Next
oWorkbook1.saved = True
oWorkbook1.close
oExcel.Quit
if StrComp(Left(aFiles(i),5), Left(aFiles(i + 1),5),1) <> 0 Then k = k + 1
'debug.print
MsgBox k
MsgBox UBound(aBNo)
'Testausgabe Array
For g = 0 to UBound(aBNo)
Item = Item & aBNo(g,0) & " | " & aBNo(g,1) &vbcrlf
Next
MsgBox Item
Next
Grüße
opiwahn