Guten Abend ich habe folgendes Problem,
Ich habe einen Prozess welchen ich durch ein Makro automatisieren möchte, welcher wiefolgt die Datei testresult.csv in einem Loop aus einem Ordner öffnet, den Inhalt kopiert und in der Ursprünglichen Mappe in welcher das Makro ist nach einem Muster untereinander einfügt.
Mein Problem dabei ist, dass der Ordner, nennen wir ihn C:\etwas\test noch eine Unterordnerstruktur besitzt aus welcher ich die Datei öffnen möchte. Also veranschaulicht
C:\etwas\test\sample1\results
C:\etwas\test\sample2\results
C:\etwas\test\sample3\results
....
C:\etwas\test\sample1000\results<strong></strong>
Ich weiß allerdings nicht wie ein allgemeiner loop für eine solche Struktur funktioniert.
Hier das Makro, vielen Dank fürs anschauen im Voraus
Public Sub Alle_Dateien()
'//deklarationen
Dim strFileName As String
Dim objWorkbook As Workbook
'//Errorhandler initialisieren
On Error GoTo err_exit
'//erste Excelmappe suchen
strFileName = Dir$("C:\etwas\test\*.csv", vbNormal)
'//wenn eine Excelmappe gefunden wurde
If strFileName <> "testresults.csv" Then
'//Schleife starten
Do
'//Excelmappe öffnen
Set objWorkbook = Workbooks.Open(Filename:=strFileName)
'//Code
'//Excelmappe kopieren
Worksheets("Tabelle1").Cells.Copy
'//Excelmappe in Zwischenablage einfügen
With Worksheets("Zwischenspeicher")
.Cells.PasteSpecial Paste:=xlPasteValues
.Cells.PasteSpecial Paste:=xlPasteFormats
End With
Application.CutCopyMode = False
'//Makro kopieren und einfügen der Daten in nächste freie Zeile von Auswertung
Worksheets("Auswertung").Rows("3:3").Select
Selection.Copy
Worksheets("Auswertung").Range("A" & Cells(Rows.Count, 2).End(xlUp).Row + 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'//Excelmappe schließen - ohne zu speichern = False / mit speichern = True
objWorkbook.Close SaveChanges:=False
'//nächste Excelmappe suchen
strFileName = Dir$
'//wird keine Mappe mehr gefunde Schleife verlassen
Loop Until strFileName = ""
End If
Exit Sub
err_exit:
MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & _
Err.Description, vbCritical, "Fehlermeldung"
End Sub
|