07.09.2016, 09:39
Hallo,
ich will in einem Verzeichnis aus mehreren Excel-Dateien bestimmte Zeilen auslesen.
Ich habe ein Beispiel gefunden und kann aber nur aus meinem Tabellenblatt
"Yieldverlauf über 2 Monate" die Zeile 2 oder Zeile 3 auslesen.
Wie kann ich beide Zeilen (2 und 3) auslesen ?
Wenn ich in der Zeile:
arr(z, x) = "='" & sSourcePath & "\[" & oFile.Name & "]" & sSourceSheet & "'!$" & i & "$2" 'Array füllen
den Wert $2 oder $3 eintrage wird immer nur die zweite oder dritte Zeile ausgelesen.
Den Code und und zwei Dateien hänge ich an.
Kann mir jemand einen Tip geben ?
Danke und Gruß
Günti
ich will in einem Verzeichnis aus mehreren Excel-Dateien bestimmte Zeilen auslesen.
Ich habe ein Beispiel gefunden und kann aber nur aus meinem Tabellenblatt
"Yieldverlauf über 2 Monate" die Zeile 2 oder Zeile 3 auslesen.
Wie kann ich beide Zeilen (2 und 3) auslesen ?
Wenn ich in der Zeile:
arr(z, x) = "='" & sSourcePath & "\[" & oFile.Name & "]" & sSourceSheet & "'!$" & i & "$2" 'Array füllen
den Wert $2 oder $3 eintrage wird immer nur die zweite oder dritte Zeile ausgelesen.
Den Code und und zwei Dateien hänge ich an.
Kann mir jemand einen Tip geben ?
Danke und Gruß
Günti
Code:
Sub Zusammenfassen_Excel_Dateien()
Dim sSourcePath As String, sSourceSheet As String
Dim arr, z As Integer, i, x As Integer, oFile, fso
Dim wbges As Workbook, wsziel As Worksheet
sSourcePath = "C:\PG500\Inf-Files" ' Pfad
sSourceSheet = "Yieldverlauf über 2 Monate" ' Tabellenname aus der Quelldatei
Set wbges = ActiveWorkbook 'aktuelle Datei, Zieldatei
Set wsziel = ActiveWorkbook.ActiveSheet 'aktuelles Tabellenblatt der Zieldatei
Set fso = CreateObject("Scripting.FileSystemObject")
Application.ScreenUpdating = False 'während der folgenden Aktionen Bildschirm einfrieren
ReDim arr(fso.GetFolder(sSourcePath).Files.Count, 10) 'Array dimensionieren
For Each oFile In fso.GetFolder(sSourcePath).Files 'alle Quelldateien im Verzeichnis durchlaufen
If LCase(fso.getextensionname(oFile.Name)) = "xlsx" Then 'nur xlsx-Dateien bearbeiten
For Each i In Array("a", "b", "c")
arr(z, x) = "='" & sSourcePath & "\[" & oFile.Name & "]" & sSourceSheet & "'!$" & i & "$2" 'Array füllen
x = x + 1 'Laufende Spaltennummer im Array
Next
x = 0: z = z + 1
End If
Next 'Datei
Application.ScreenUpdating = True 'Bildschirmanzeige wiederauftauen
With wsziel
.Range(.Cells(2, 1), .Cells(UBound(arr) + 2, 11)) = arr 'Array ausgeben
With .Range(.Cells(2, 1), .Cells(UBound(arr) + 2, 11))
.Value = .Value
End With
End With
'Anpassung der Spaltenbreite
Call ActiveSheet.Columns.AutoFit
'Zahlenformat festlegen
Range("B:B").NumberFormat = "#,##0.00"
wbges.Save 'ZielDatei speichern
MsgBox "Fertig"
End Sub