@JogyB AW: Makro - einfache VBA Schleife
20.10.2008 17:14:38
JogyB
Hi.
Zum einlesen fallen mir spontan zwei Möglichkeiten ein, entweder über Dir oder über FileSearch. Ich nehme mal FileSearch, weil Du damit noch die Möglichkeit hättest, auch die Dateien von Unterordnern zu verwenden.
Sub ueberTragen3()
Dim wbkNr As Byte
Dim leseZeiLe As Long
Dim schreibZeile As Long
Dim readWbk As Workbook
Dim daTeien As Variant
Dim overVSh As Worksheet
Dim overVWbk As Workbook
Dim offSet As Long
Const sPath = "c:\temp\" ' Hier den Suchpfad eintragen
Application.ScreenUpdating = False
schreibZeile = 2
Set overVSh = ActiveSheet
Set overVWbk = ActiveWorkbook
With Application.FileSearch
.Filename = "*.xls"
.LookIn = sPath
.SearchSubFolders = False ' oder True, wenn Du in Unterordnern suchen willst
.Execute
If .FoundFiles.Count > 0 Then
ReDim daTeien(1 To .FoundFiles.Count)
For wbkNr = 1 To .FoundFiles.Count
If .FoundFiles(wbkNr) overVWbk.FullName Then
daTeien(wbkNr - offSet) = .FoundFiles(wbkNr)
Else
ReDim Preserve daTeien(1 To UBound(daTeien) - 1)
offSet = offSet + 1
End If
Next
Else
Exit Sub
End If
End With
For wbkNr = 1 To UBound(daTeien)
Set readWbk = Workbooks.Open(daTeien(wbkNr), , True)
With readWbk.Sheets(1)
For leseZeiLe = 2 To .Cells(Rows.Count, 4).End(xlUp).Row
If IsNumeric(.Cells(leseZeiLe, 4).Value) Then
If .Cells(leseZeiLe, 4).Value = 1 Then
.Rows(leseZeiLe).Copy overVSh.Rows(schreibZeile)
schreibZeile = schreibZeile + 1
End If
End If
Next
End With
readWbk.Close False
Next
Application.ScreenUpdating = True
End Sub
Die Übertragung in den Dateien-Array ist eigentlich unnötig, so konnte ich aber den restlichen Code unverändert lassen.
Geöffnete Dateien sind übrigens kein Problem, da die Dateien schreibgeschützt geöffnet werden. Das einzige Problem wäre, wenn die Dateien von Dir bereits geöffnet wären. Könnte man aber auch noch abfangen, wenn Dir das wichtig wäre.
Ein weiteres Problem wäre, wenn bereits eine andere Datei mit demselben Dateinamen bei Dir offen wäre - kann man auch abfangen, nur was soll dann mit der bereits geöffneten Datei passieren?
Gruss, Jogy