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

Forumthread: Dateien öffenen mit VBA und dann löschen

Dateien öffenen mit VBA und dann löschen
12.05.2016 16:21:44
Elmar
Hallo Excelexperten,
hätte ein Problem, bei dem ich trotz Forum und rumprobieren nicht weiterkomme..
Ich bekomme jede Woche (immer Dienstags)in ein Verzeichnis D:\EM\Ablage_TS etwa 100 Dateien mit unterschiedlichen Namen reingeschoben. Nun soll ein Makro eine Datei nach der anderen abarbeiten. Die Routine der Abarbeitung (mehrere Sachen daraus in eine Gesamtzusammenstellung kopieren) habe ich schon, aber ich hab das Problem, dass ich nicht alle Dateien nacheinander geöffnet bekomme (weil die Namen jede Woche wieder anders lauten)und dann die Routine läuft und wenn das fertig ist, die Datei wieder geschlossen (oder gelöscht, das ist egal, die Dateien sind alle gesichert)wird.
Wenn ich jede einzeln öffne, mein "Kopiermakro" starte und dann wieder schließe geht das ganz gut, aber eben sehr zeitaufwändig.
Hat jemand eine Idee, wie ich die Dateien geöffnet und dann wieder geschlossen oder gelöscht bekomme mit Hilfe eines Makros?
Danke vorab schonmal
Elmar

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien öffenen mit VBA und dann löschen
12.05.2016 16:28:31
UweD
Hallo
hilft dir das?
in der Mitte baust du dein Makro ein.

Sub alle_Dateien_Verzeichnis() '
Dim Dlg As FileDialog
Dim Si, Ext$, Datei$
Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) 'Verzeichnis wählen
If Dlg.Show = True Then
For Each Si In Dlg.SelectedItems
Ext = "*.xls*"
Si = IIf(Right(Si, 1) = "\", Si, Si & "\")
Datei = Dir(Si & Ext)
Do While Len(Datei) > 0
Workbooks.Open FileName:=Si & Datei
'mach was damit
Workbooks(Datei).Close False
Kill Datei
Datei = Dir() ' nächste Datei
Loop
Next
End If
End Sub

Gruß Uwe

Anzeige
AW: Dateien öffenen mit VBA und dann löschen
12.05.2016 16:36:44
UweD
im Kill-Befehl fehlt noch das Verzeichnis

Kill Si & Datei

AW: Dateien öffenen mit VBA und dann löschen
12.05.2016 16:32:12
Fennek
Hallo,
folgende Schleife öffnet alle Dateien eines Ordners und schließt sie nach der Bearbeitung. Mit einem "kill"-Befehl kann man sie auch löschen.

sPath = "c:\temp\" '  ""
'hier die Codes für die Bearbeitung
'z.B. : workbooks.open(sPath & sFile)
sFile = dir
loop
mfg

Anzeige
AW: Dateien öffenen mit VBA und dann löschen
12.05.2016 16:35:47
Daniel
Hi
du kannst dir DIR-Funktion verwenden.
mit DIR("D:\EM\Ablage_TS\*.xls*") bekommst du den Namen der ersten Exceldatei aus diesem Verzeichnis.
wenn du in der Folge dann nur noch DIR() abfragst, bekommst du die nächste Exceldatei aus diesem Verzeichnis.
Das kannst du in einer Schleife solange wiederholen, biss alle Dateien im Verzeichnis abgearbeitet sind auf die die erste Dir-Suche passt.
Wenn alle Dateien durch sind, gibt DIR dir dann den Leerstring zurück.
geht im Prinzip so:

dim Pfad as String
dim Datei as String
dim wb as workbook
Pfad = "D:\EM\Ablage_TS\"
Datei = Dir(Pfad & "*.xls*")
Do Until Datei = ""
Set wb = Workbooks.Open(Pfad & Datei)
'--- hier dann der Code zum Bearbeiten der Datei
wb.Close False
Datei = Dir()
Loop
Gruß Daniel

Anzeige
AW: Dateien öffenen mit VBA und dann löschen
12.05.2016 16:53:45
Elmar
Hallo zusammen,
bin ja überwältigt.... wenn ich das gewusst hätte, hätte ich nicht 2 Stunden mit versuchen vergeudet!
Ich probiere später beide Lösungen aus,muss grade weg in eine Besprechung,gebe nochmal kurz Feedback
DANKE schon an Euch alle!!
VG aus Wien
Elmar

Anzeige
AW: Dateien öffenen mit VBA und dann löschen
13.05.2016 00:01:50
Elmar
Hallo zusammen,
wie gedacht... funktioniert bestens in beiden Variationen.
DANKE nochmal
Elmar
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien mit VBA öffnen und löschen


Schritt-für-Schritt-Anleitung

Um in Excel VBA eine Datei zu öffnen und sie anschließend zu löschen, kannst Du den folgenden Code nutzen. Dieser Code öffnet alle Excel-Dateien in einem bestimmten Verzeichnis, führt eine Bearbeitung durch und löscht die Dateien danach.

  1. Öffne den Visual Basic for Applications (VBA) Editor (ALT + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  3. Kopiere und füge den folgenden Code ein:
Sub alle_Dateien_Verzeichnis()
    Dim Dlg As FileDialog
    Dim Si, Ext As String, Datei As String
    Set Dlg = Application.FileDialog(msoFileDialogFolderPicker) ' Verzeichnis wählen
    If Dlg.Show = True Then
        For Each Si In Dlg.SelectedItems
            Ext = "*.xls*"
            Si = IIf(Right(Si, 1) = "\", Si, Si & "\")
            Datei = Dir(Si & Ext)
            Do While Len(Datei) > 0
                Workbooks.Open FileName:=Si & Datei
                ' Hier kannst Du Deinen Bearbeitungscode einfügen
                Workbooks(Datei).Close False
                Kill Si & Datei ' Datei löschen
                Datei = Dir() ' nächste Datei
            Loop
        Next
    End If
End Sub
  1. Anpassungen vornehmen: Du kannst den Bearbeitungscode in der angegebenen Stelle einfügen, um die gewünschten Änderungen an den geöffneten Dateien vorzunehmen.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Überprüfe, ob das Verzeichnis korrekt angegeben ist und die Dateien tatsächlich dort sind.
  • Fehler: "Zugriff verweigert"

    • Stelle sicher, dass die Dateien nicht schreibgeschützt sind oder von einer anderen Anwendung verwendet werden.
  • Fehler: "Kill-Befehl funktioniert nicht"

    • Achte darauf, dass der Kill-Befehl das komplette Verzeichnis benötigt. Nutze Kill Si & Datei, um die Datei erfolgreich zu löschen.

Alternative Methoden

Eine alternative Methode besteht darin, die DIR-Funktion direkt im Code zu verwenden, um alle temporären Excel-Dateien in einem bestimmten Verzeichnis zu finden:

Dim Pfad As String
Dim Datei As String
Dim wb As Workbook
Pfad = "D:\EM\Ablage_TS\"
Datei = Dir(Pfad & "*.xls*")
Do Until Datei = ""
    Set wb = Workbooks.Open(Pfad & Datei)
    ' Hier den Bearbeitungscode einfügen
    wb.Close False
    Kill Pfad & Datei ' Datei löschen
    Datei = Dir()
Loop

Praktische Beispiele

Ein Beispiel für die Nutzung des Codes könnte sein, dass Du Daten aus den geöffneten Dateien in eine Master-Datei kopierst. Du könntest den Bearbeitungscode anpassen, um spezifische Daten zu extrahieren und in eine zentrale Datei zu übertragen.


Tipps für Profis

  • Nutze Variablen, um Dateinamen und Pfade dynamisch zu gestalten und die Wartbarkeit Deines Codes zu erhöhen.
  • Füge Error-Handling hinzu, um das Makro robuster zu machen. Zum Beispiel:
On Error Resume Next
' Dein bearbeitender Code hier
On Error GoTo 0
  • Teste Deinen Code mit einer kleineren Anzahl von Dateien, um sicherzustellen, dass alles wie gewünscht funktioniert, bevor Du es auf große Mengen anwendest.

FAQ: Häufige Fragen

1. Wie kann ich temporäre Excel-Dateien finden?
Du kannst die DIR-Funktion verwenden, um alle Dateien mit der Endung .xls in einem bestimmten Verzeichnis zu durchsuchen.

2. Was passiert, wenn ich den Kill-Befehl benutze?
Der Kill-Befehl löscht die angegebene Datei permanent. Stelle sicher, dass Du keine wichtigen Daten verlierst.

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