Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Per VBA Dateien aus einem Ordner öffnen

Per VBA Dateien aus einem Ordner öffnen
11.05.2006 16:05:31
boris.odendahl@allianzgi.lu
Hallo,
ich habe mich wirklich bemüht eine Lösung zu finden, aber ich komme nicht recht weiter. Vielleicht ist einer von Euch so freundlich... !
Folgendes Problem:
Aus Excel möchte ich nacheinander mehrere CSV Dateien in einem bestimmten Ordner öffnen. Nach dem eine datei geöffnet ist wird eine bestimmte routine abgearbeitet, danach kommt die nächste CSV Datei an die Reihe und so weiter. Die Probleme die durch verschiedene Ländereinstellungen der CSV Datei und meinem PC auftreten habe ich schon gelöst. Die Namen der CSV Dateien unterscheiden sich nur durch einen Timestamp. Im Prinzip spielt der name der datei auch keine Rolle. Die Routine soll auf jede Datei in dem speziellen Ordner angewendet werden. Mein Problem liegt nun in der Definition des Ordners:
Dim Item As Object
Dim FileName As String
Dim i As Integer
Dim Folder As ?
Set Folder = "J:\Datawarehouse\Bank"
i = 0
For Each Item In Folder. Item
.........
mmhhh, irgentwie geht das nicht ...
Gruss und schon mal vielen Dank
BORIS
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Dateien aus einem Ordner öffnen
11.05.2006 16:10:43
UweD
Hallo
hier mal ein Muster von mir.

Sub alle_Dateien_Verzeichnis() '
strPath = "J:\Datawarehouse\Bank\" 'Pfad des Verzeichnisses ggf. anpassen
strExt = "*.csv"       'Dateiextension ggf. anpassen
Dim strFile As String
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
'mach was damit
'deine routine
Workbooks(strFile).Close
strFile = Dir() ' nächste Datei
Loop
End If
End Sub

Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Per VBA Dateien aus einem Ordner öffnen
11.05.2006 16:14:54
IngGi
Hallo Boris,
so zum Beispiel:

Sub Dateien_oeffnen()
Dim fso As Object
Dim fo As Object
Dim f As Object
Set fso = ("Scripting.FileSystemObject")
Set fo = fso.getfolder("J:\Datawarehouse\Bank\")
For Each f In fo.Files
Workbooks.Open f.Path
Next 'f
End Sub
Gruß Ingolf
Anzeige
AW: Per VBA Dateien aus einem Ordner öffnen
11.05.2006 17:34:43
Boris
Vielen Dank,
ich habe Uwes Lösung umgesetzt. Das hat den Vorteil, das ich in dem Ordner xls und csv Dateien haben kann, aber nur die csv Datei vom Macro bearbeitet wird.
Vielen dank Euch beiden
Gruss
BORIS
AW: Per VBA Dateien aus einem Ordner öffnen
11.05.2006 19:40:05
Boris
Hallo,
vielleicht interessiert sich jemand für das gesamte Ergebnis. der Workflow ist folgendermassen:
- CSV Dateien werden von einem Makro in Outlook von der Mail getrennt und in einem Verzeichniss abgelegt.
- Das folgende Makro öffnet diese CSV Dateien, wobei zu beachten ist, das diese mit engl. Zahlenformat (. für , und , für .) erstellt wurden.
- Danach wird die Spaltenbreite angepasst und ein Autofilter eingefügt und die datei als XLS File gespeichert.
- Wenn so alle CSV dateien abgearbeitet sind, werden die CSV dateien gelöscht.
Option Explicit

Sub CSV_to_XLS()
' Wandelt CSV Dateien in XLS Dateien um
Dim strFile As String
Dim strPath As String
Dim strExt As String
Dim Item As String
Dim delFile As String
strPath = "J:\Datawarehouse\"
strExt = "*.csv"""
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = False
End With
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.OpenText Filename:=strPath & strFile, _
DataType:=xlDelimited, semicolon:=True, local:=True
'Das local Argument ist entscheidend, da Excel intern Engl Format verwendet und
'CVS daher mit Komma und nicht mit Semikolon trennt.
Cells.Select
Cells.EntireColumn.AutoFit
Rows("1:1").AutoFilter
Range("A1").Select
ActiveWorkbook.SaveAs Filename:= _
strPath & Mid(strFile, 1, 22) & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
strFile = Dir() ' naechste Datei
Loop
delFile = Dir$("J:\Datawarehouse\*csv")
Do While delFile <> ""
Kill "J:\Datawarehouse\" & delFile
delFile = Dir$("J:\Datawarehouse\*csv")
Loop
End If
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = True
End With
End Sub

Viele Grüsse
Boris
Anzeige
;

Forumthreads zu verwandten Themen

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 einem Ordner mit Excel VBA öffnen


Schritt-für-Schritt-Anleitung

Um mit Excel VBA Dateien aus einem bestimmten Ordner zu öffnen, kannst du die folgende Vorgehensweise nutzen. Dieses Beispiel zeigt, wie man alle CSV-Dateien in einem Ordner nacheinander öffnet und eine Routine darauf anwendet.

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject", wähle "Einfügen" und dann "Modul".
  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:
Sub alle_Dateien_Verzeichnis()
    Dim strPath As String
    Dim strExt As String
    Dim strFile As String

    strPath = "J:\Datawarehouse\Bank\" ' Pfad des Verzeichnisses anpassen
    strExt = "*.csv" ' Dateiextension anpassen

    If strPath = "" Then Exit Sub

    strFile = Dir(strPath & strExt)
    Do While Len(strFile) > 0
        Workbooks.Open Filename:=strPath & strFile
        ' Hier kommt die Routine für die geöffnete Datei
        Workbooks(strFile).Close
        strFile = Dir() ' nächste Datei
    Loop
End Sub
  1. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8 drückst und das Makro auswählst.

Häufige Fehler und Lösungen

  • Fehler: „Datei nicht gefunden“
    Lösung: Stelle sicher, dass der angegebene Pfad korrekt ist und die Dateien tatsächlich im Ordner vorhanden sind.

  • Fehler: „Typenkonflikt“
    Lösung: Überprüfe, ob der Typ der Variablen korrekt deklariert ist, insbesondere bei der Verwendung von Objekten.

  • Problem: Dateien öffnen sich nicht
    Wenn du vba ordner öffnen und vba datei öffnen verwendest und die Dateien sich nicht öffnen, überprüfe die Dateiberechtigungen und den Pfad.


Alternative Methoden

Eine alternative Methode zum Öffnen von Dateien in einem Ordner ist die Verwendung des FileSystemObject. Hier ein Beispiel:

Sub Dateien_oeffnen()
    Dim fso As Object
    Dim fo As Object
    Dim f As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fo = fso.GetFolder("J:\Datawarehouse\Bank\")

    For Each f In fo.Files
        Workbooks.Open f.Path
        ' Hier kommt die Routine für die geöffnete Datei
    Next f
End Sub

Diese Methode ist nützlich, um vba alle dateien in einem ordner zu öffnen und mehr Kontrolle über die Dateiverwaltung zu haben.


Praktische Beispiele

Hier ist ein Beispiel, das CSV-Dateien öffnet, verarbeitet und dann in XLS-Dateien speichert:

Sub CSV_to_XLS()
    Dim strFile As String
    Dim strPath As String
    Dim strExt As String

    strPath = "J:\Datawarehouse\"
    strExt = "*.csv"

    strFile = Dir(strPath & strExt)

    Do While Len(strFile) > 0
        Workbooks.OpenText Filename:=strPath & strFile, DataType:=xlDelimited, semicolon:=True, local:=True
        Cells.EntireColumn.AutoFit
        Rows("1:1").AutoFilter
        ActiveWorkbook.SaveAs Filename:=strPath & Replace(strFile, ".csv", ".xls"), FileFormat:=xlNormal
        ActiveWorkbook.Close
        strFile = Dir()
    Loop
End Sub

Mit diesem Makro kannst du alle CSV-Dateien in XLS-Dateien umwandeln und die ursprünglichen CSV-Dateien anschließend löschen.


Tipps für Profis

  • Verwende Fehlerbehandlungsroutinen: Füge On Error Resume Next und On Error GoTo 0 hinzu, um potentielle Fehler zu handhaben.
  • Optimierung durch Batch-Verarbeitung: Wenn du viele Dateien hast, erwäge, die Daten zuerst in ein Array zu laden, bevor du sie verarbeitest. Das kann die Geschwindigkeit erhöhen.
  • Benutze Parameter: Erstelle Parameter für deine Makros, um den Pfad und die Dateiendung flexibel anpassen zu können.

FAQ: Häufige Fragen

1. Wie kann ich eine beliebige Datei mit VBA öffnen?
Du kannst die Methode Workbooks.Open Filename:="dein_pfad\deine_datei.ext" verwenden, um eine spezifische Datei zu öffnen.

2. Wie öffne ich alle Dateien in einem Ordner nacheinander?
Verwende eine Schleife mit Dir oder das FileSystemObject, um alle Dateien in einem Ordner zu durchlaufen und zu öffnen.

3. Gibt es eine Möglichkeit, auch Unterordner zu durchsuchen?
Ja, du kannst eine rekursive Funktion erstellen, die alle Unterordner durchläuft und die Dateien öffnet.

Mit diesen Informationen bist du bestens gerüstet, um Dateien mit Excel VBA aus einem Ordner zu öffnen und zu bearbeiten. Viel Erfolg!

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