123813
01.09.2015
18630
5
0
Excel Makro, VBA soll Pfad auslesen Ordner inkl. Unterordner die vorliegenden Excel Dateien öffnen und 2 bestimmt Zellen in eine neue Excel untereinander schreiben
Hallo Liebe Community,
wie bereits im Titel erwähnt soll ich in Excel ein Programm schreiben, dass das oben beschriebene tut. Also es ist so, dass es sich um einen Pfad handelt mit ca. 200 Ordnern. In jedem dieser Ordner liegt einmal die erwähnte Excel Datei und noch andere nicht relevante Sachen. Jetzt soll mein Makro den Pfad absuchen, die Excel öffnen die Zellen B20 und B21 kopieren und untereinander in die Neue Excel Datei einfügen, ohne die anderen Ergebnisse zu überschreiben. Also alles dann untereinander in die Spalte A. Ich versuche es jetzt seit vergangenem Donnerstag und komme einfach nicht weiter.
Im Voraus schon einmal Vielen Dank für die Hilfe
Gruß Timur
wie bereits im Titel erwähnt soll ich in Excel ein Programm schreiben, dass das oben beschriebene tut. Also es ist so, dass es sich um einen Pfad handelt mit ca. 200 Ordnern. In jedem dieser Ordner liegt einmal die erwähnte Excel Datei und noch andere nicht relevante Sachen. Jetzt soll mein Makro den Pfad absuchen, die Excel öffnen die Zellen B20 und B21 kopieren und untereinander in die Neue Excel Datei einfügen, ohne die anderen Ergebnisse zu überschreiben. Also alles dann untereinander in die Spalte A. Ich versuche es jetzt seit vergangenem Donnerstag und komme einfach nicht weiter.
Im Voraus schon einmal Vielen Dank für die Hilfe
Gruß Timur
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 281677
Url: https://administrator.de/contentid/281677
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
da wir ungern (unbezahlt) die Arbeit von anderen Leuten machen: Was hast Du denn schon und was fehlt noch?
Klingt ganz einfach.
http://lmgtfy.com/?q=vba+verzeichnis+auslesen
http://lmgtfy.com/?q=vba+excel+datei+%C3%B6ffnen
Dazu noch 2 Schleifen und fertig
Viele Grüße
Stefan
da wir ungern (unbezahlt) die Arbeit von anderen Leuten machen: Was hast Du denn schon und was fehlt noch?
Klingt ganz einfach.
http://lmgtfy.com/?q=vba+verzeichnis+auslesen
http://lmgtfy.com/?q=vba+excel+datei+%C3%B6ffnen
Dazu noch 2 Schleifen und fertig
Viele Grüße
Stefan
Hallo Timur,
auch wenn wir das hier schon diverse male gepostet haben, hier ausnahmsweise nochmal:
(In Zeile 5 den Ordner der Dateien angeben / gestartet werden muss die Methode ImportData(), im Jetzigen Zustand werden *.xlsx und *.xls verarbeitet. Sollen noch andere Extensions inkludiert werden muss das Array in Zeile 9 um diese ergänzt werden)
Für gewünschte Ergänzungen von deiner Seite bin ich offen, jedoch ist dies dann nicht mehr kostenlos. Du kannst mich in diesem Fall dann via PM kontaktieren.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
auch wenn wir das hier schon diverse male gepostet haben, hier ausnahmsweise nochmal:
(In Zeile 5 den Ordner der Dateien angeben / gestartet werden muss die Methode ImportData(), im Jetzigen Zustand werden *.xlsx und *.xls verarbeitet. Sollen noch andere Extensions inkludiert werden muss das Array in Zeile 9 um diese ergänzt werden)
Für gewünschte Ergänzungen von deiner Seite bin ich offen, jedoch ist dies dann nicht mehr kostenlos. Du kannst mich in diesem Fall dann via PM kontaktieren.
Dim fso As Object
Sub ImportData()
Dim col As New Collection, file As Variant, wb As Workbook, rngDest as Range
'Ordner der die Dateien enthält
Const FOLDER = "C:\MeineDateien"
'Filesystemobject
Set fso = CreateObject("Scripting.FileSystemObject")
'alle Excel-Dateien rekursiv listen
getAllFiles fso.GetFolder(FOLDER), True, Array("xlsx", "xls"), col
'Screenupdates und eventuelle Dialoge für Batchbetrieb unterdrücken
Application.DisplayAlerts = False
Application.ScreenUpdating = False
With Sheets(1)
'nächste freie Zelle in Spalte A ermitteln
Set rngDest = .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'Für jede Excel-Datei
For Each file In col
'Workbook öffnen
Set wb = Workbooks.Open(file)
'Range B20:B21 ins Sheet kopieren
wb.Sheets(1).Range("B20:B21").Copy rngDest
'WB schließen
wb.Close False
'nächste freie Zelle setzen
Set rngDest = rngDest.Offset(2, 0)
Next
End With
'Screenupdates und Dialoge wieder einschalten
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Sub getAllFiles(ByVal fldr As Object, boolRecursion As Boolean, arrFileExtensions As Variant, ByRef col As Collection)
For Each file In fldr.Files
For i = 0 To UBound(arrFileExtensions)
If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then
col.Add file.Path
Exit For
End If
Next
Next
If boolRecursion Then
For Each subFolder In fldr.SubFolders
getAllFiles subFolder, True, arrFileExtensions, col
Next
End If
End Sub
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate