Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien aus Ordner nacheinander öffnen

Dateien aus Ordner nacheinander öffnen
18.01.2005 12:49:06
OLI
Hallo,
so langsam habe ich mein Makro zusammengeschustert, doch nur für eine Datei. Was jetzt noch klappen sollte...
Ich habe einen Ordner mit vielen Dateien (Dateien haben keine fortlaufende Nummerierung). Das Makro sollte automatisch aus einem fixen Ordner...
1. Erste Datei öffnen (xml)
2. Inhalt einlesen (macht mein bisheriges Makro, allerdings wäre es schön, wenn man auch den aktuellen Dateinamen einlesen könnte?!)
3. Erste Datei schließen
4. Zweite Datei öffnen
...
usw. die Reihenfolge ist dabei nicht so wichtig.
Wäre super, wenn mir jemand auf die Sprünge helfen könnte,
Danke,
OLI
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien aus Ordner nacheinander öffnen
bernd
hallo oli
auf die sprünge
müsste z.B. so gehn:
mit application.filesearch die dateien suchen.
dann in einer schleife mit
for i= 1 to application.filesearch.foundfiles.count
datei(i) öffnen
inhalte einlesen
datei(i) schließen
next
wenn du nicht klar kommst, melde dich ruhig nochmal.
bernd
Anzeige
AW: Dateien aus Ordner nacheinander öffnen
Uduuh
Hallo,
etwa so:
Option Explicit

Sub Read_Files()
Dim strFTyp As String, _
strOrdner As String, _
strSF As Byte, _
strFile As String, _
strName As String, _
FS As FileSearch, _
i As Integer, z As Integer, n As Integer, _
wbkVV As Workbook, _
wshVV As Worksheet, _
wshFiles As Worksheet, _
rngFind As Range, iZähler As Integer
Application.ScreenUpdating = False
strFTyp = "*.xls"
strOrdner = ThisWorkbook.Path
Set FS = Application.FileSearch
With FS
.LookIn = strOrdner
.Filename = "*" & strFTyp
.SearchSubFolders = True
If .Execute > 0 Then
Set wshFiles = Sheets(1)
For i = 1 To .FoundFiles.Count
If .FoundFiles(i) <> ThisWorkbook.Path & "\" & ThisWorkbook.Name Then
n = wshFiles.Cells(65536, 1).End(xlUp).Row + 1
strFile = .FoundFiles(i)
Set wbkVV = Workbooks.Open(Filename:=.FoundFiles(i), IgnoreReadOnlyRecommended:=True)
Set wshVV = wbkVV.Sheets(1)
strName = wbkVV.Name
With wshFiles.Rows(n)
.Cells(1) = wshVV.Range("V5")
.Cells(2) = wshVV.Range("H5")
.Cells(3) = wshVV.Range("A7")
.Cells(4) = wshVV.Range("H10")
.Cells(5) = wshVV.Range("A5")
.Cells(6) = strName
.Cells(7) = strFile
End With
wbkVV.Close False
End If
Next i
End If
End With
wshFiles.Cells.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub

Gruß aus'm Pott
Udo

Anzeige
AW: Dateien aus Ordner nacheinander öffnen
18.01.2005 13:19:23
Matthias
Hallo dieses Code-beispiel öffnet alle Dateiformate, nicht nur .xls, sondern alle Formate dessen SW auf Deinem PC installiert sind.
Viel Spaß.
Gruß Matthias
Public Declare

Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal lpnShowCmd As Long) As Long
Public 

Function findfiles()
Dim DeinSuchpfad As String
DeinSuchpfad = "Z:\FD_RBG\FD PreProjects\Projectbook\Projectbook Daten"
Set wkb = ActiveWorkbook
With Application.FileSearch
.LookIn = DeinSuchpfad
.SearchSubFolders = 0 'bezieht keine unterordner ein
.Filename = "*.*"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
Call FileOpen(.FoundFiles(i))
Next i
End If
End With
Set wkb = Nothing
End Function

Public

Function FileOpen(ssDatei)
Dim Dateiname As String
Dim dateipfad As String
If ssDatei = False Then
Exit Function
End If
If Right(ssDatei, 3) = "xls" Then
Workbooks.Open Filename:=(ssDatei)
Else
Dateiname = StrReverse(Left((StrReverse(ssDatei)), (InStr(1, (StrReverse(ssDatei)), "\", vbBinaryCompare) - 1)))
dateipfad = StrReverse(Right(StrReverse(ssDatei), (Len(ssDatei) - InStr(1, (StrReverse(ssDatei)), "\", vbBinaryCompare))))
ShellExecute 0, "open", Dateiname, "", dateipfad, 3
End If
End Function

Anzeige
AW: Dateien aus Ordner nacheinander öffnen
OLI
Hallo,
wahnsinn, erstes Mal hier im Forum und gleich so viele Antworten... DANKE!!!
Jetzt muss ich mir das alles in Ruhe anschauen, und versuchen zu verstehen.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateien aus Ordner nacheinander öffnen


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Neues Modul hinzufügen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:
Sub Read_Files()
    Dim strOrdner As String, strFile As String
    Dim wbkVV As Workbook, wshFiles As Worksheet
    Application.ScreenUpdating = False
    strOrdner = ThisWorkbook.Path ' Aktueller Ordner
    Set wshFiles = Sheets(1) ' Annahme: Ergebnis in das erste Blatt
    With Application.FileSearch
        .LookIn = strOrdner
        .Filename = "*.xls"
        .SearchSubFolders = False
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                strFile = .FoundFiles(i)
                Set wbkVV = Workbooks.Open(Filename:=strFile)
                ' Hier kannst du die Zellen anpassen, die eingelesen werden sollen
                wshFiles.Cells(i, 1) = wbkVV.Sheets(1).Range("A1").Value
                wbkVV.Close False
            Next i
        End If
    End With
    Application.ScreenUpdating = True
End Sub
  1. Makro ausführen: Drücke F5 oder gehe auf Run > Run Sub/UserForm, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden": Stelle sicher, dass der Pfad korrekt angegeben ist und die Datei existiert.
  • Fehler: "Typ nicht erkannt": Überprüfe, ob alle Dateien im angegebenen Ordner das richtige Format haben (z.B. .xls).
  • Makro läuft nicht: Achte darauf, dass Makros in Excel aktiviert sind (unter Datei > Optionen > Trust Center > Einstellungen für das Trust Center).

Alternative Methoden

  • Power Query: Nutze Power Query, um Daten aus mehreren Dateien zu importieren. Dies ist besonders nützlich, wenn du regelmäßig Daten aus einem Ordner laden möchtest.
  • Batch-Skripting: Verwende ein Batch-Skript, um die Dateien vorab in einem bestimmten Format zu konvertieren, bevor du sie in Excel öffnest.

Praktische Beispiele

Ein einfaches Beispiel, wie du die ersten drei Zellen jeder geöffneten Datei in ein neues Arbeitsblatt einlesen kannst:

Sub Read_First_Three_Cells()
    Dim strOrdner As String, strFile As String
    Dim wbkVV As Workbook, wshFiles As Worksheet
    Application.ScreenUpdating = False
    strOrdner = ThisWorkbook.Path
    Set wshFiles = Sheets(1)
    With Application.FileSearch
        .LookIn = strOrdner
        .Filename = "*.xls"
        If .Execute > 0 Then
            For i = 1 To .FoundFiles.Count
                strFile = .FoundFiles(i)
                Set wbkVV = Workbooks.Open(Filename:=strFile)
                wshFiles.Cells(i, 1) = wbkVV.Sheets(1).Range("A1").Value
                wshFiles.Cells(i, 2) = wbkVV.Sheets(1).Range("A2").Value
                wshFiles.Cells(i, 3) = wbkVV.Sheets(1).Range("A3").Value
                wbkVV.Close False
            Next i
        End If
    End With
    Application.ScreenUpdating = True
End Sub

Tipps für Profis

  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next, um Fehler beim Öffnen von Dateien zu vermeiden.
  • Dateiformate anpassen: Stelle sicher, dass dein Makro auch mit anderen Dateiformaten arbeitet, falls nötig. Passe die Zeile .Filename = "*.xls" an.
  • Optimierung der Geschwindigkeit: Schalte Application.ScreenUpdating und Application.Calculation aus, um die Ausführungsgeschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Kann ich auch andere Dateiformate öffnen?
Ja, du kannst die Zeile .Filename = "*.xls" anpassen, um andere Formate wie .xlsx oder sogar .csv zu öffnen.

2. Wie kann ich den Dateinamen in die Excel-Tabelle einfügen?
Du kannst strFile verwenden, um den Dateinamen in die Zelle zu schreiben, nachdem du die Datei geöffnet hast, z.B. wshFiles.Cells(i, 4) = strFile.

3. Warum wird das Makro nicht ausgeführt?
Stelle sicher, dass Makros in Excel aktiviert sind und dass du im richtigen Arbeitsblatt arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige