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

Forumthread: Code für prüfen ob Datei bereits vorhanden ist

Code für prüfen ob Datei bereits vorhanden ist
15.02.2018 15:54:54
Andreas
Hallo,
hab da eine Frage
und zwar wie man ein Prüfung einfügt ob die Datei die es zu speichern gilt, im Zielordner schon vorhanden ist.
Am besten natürlich über eine msgBox.
Wenn die Datei schon existiert soll diese aber nicht überschrieben werden können, sondern soll über eine nächste Box umbenannt werden können.
Hab euch meinen bisherigen Code kopiert.
Hoffe mir kann jemand helfen.
Vielen Dank im voraus
LG Andi
Sub Seite1_speichern()
' Seite1_speichern Makro
If MsgBox("Wollen sie die aktuelle Kalenderwoche wirklich übermitteln?", vbYesNo + vbQuestion, " _
Achtung") = vbYes Then
' speichert Tabelle unter Pfad und vorgegebenen Namen als pdf
ChDir "D:\Daten\Test"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"D:\Daten\Test\" & Range("D5") & "_KW" & Range("AQ2") & "_" & Range("G5"), Quality:= _
xlQualityStandard, IncludeDocProperties:= _
True, IgnorePrintAreas:=False, From:=1, To:=3, OpenAfterPublish:=True
' Erzeugt einen Übermittelt Stempel
ActiveSheet.Unprotect Password:="Alina1711"
Range("J33:O34").Select
ActiveCell.FormulaR1C1 = "Übermittelt"
Range("J33:O34").Select
With Selection.Interior
.Pattern = xlGray25
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("B25").Select
ActiveSheet.Protect Password:="Alina1711"
End If
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code für prüfen ob Datei bereits vorhanden ist
15.02.2018 16:01:34
UweD
Hallo
ungeprüft

if DIR("DeineDateiMitKomplettemPfad")"" then
'Datei ist da
Else
'Noch neu
end if
LG UweD
AW: Code für prüfen ob Datei bereits vorhanden ist
15.02.2018 16:40:33
Andreas
Hallo UweD,
danke für deine Antwort.
Aber bin ehrlich nicht so gut in VBA.
Hab zwar deinen Code eingearbeitet aber die Dateien werden dennoch überschrieben bzw.
bekomme ich das mit den msgBoxen auch nicht hin.
Vielleicht hättest du noch einen anderen Lösungsvorschlag
Anzeige
AW: Code für prüfen ob Datei bereits vorhanden ist
15.02.2018 16:58:17
Peter(silie)
Hallo,
versuchs mal so:
Sub Seite1_speichern()
Dim path As String
Dim folder_ As String
fodler_ = "D:\Daten\Test\"
If MsgBox("Wollen sie die aktuelle Kalenderwoche wirklich übermitteln?", _
vbYesNo + vbQuestion, " Achtung") = vbYes Then
If Not PathExists(folder_) Then
ChDir folder_
End if
path = folder_ & Range("D5") & "_KW" & Range("AQ2") & "_" & Range("G5")
If Not PathExists(path) Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
path, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
From:=1, To:=3, OpenAfterPublish:=True
Else
MsgBox "Datei existiert bereits"
End if
' Erzeugt einen Übermittelt Stempel
ActiveSheet.Unprotect Password:="Alina1711"
Range("J33:O34").Select
ActiveCell.FormulaR1C1 = "Übermittelt"
Range("J33:O34").Select
With Selection.Interior
.Pattern = xlGray25
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("B25").Select
ActiveSheet.Protect Password:="Alina1711"
End If
End Sub
Private Function PathExists(byVal path As String) As boolean
PathExists = Dir(path, vbDirectory)  vbNullString
End Function  

Anzeige
Ups fehler
15.02.2018 16:59:44
Peter(silie)
Hallo,
Sub Seite1_speichern()
Dim path As String
Dim folder_ As String
fodler_ = "D:\Daten\Test\"
das Fettmarkierte ersetzen durch: folder_ = "D:\Daten\Test\"
AW: Ups fehler
15.02.2018 17:15:38
Andreas
Hallo Peter(silie),
danke auch für deine Antwort,
habs ausprobiert aber die Dateien werden dennoch überschrieben, bzw.
die msgBox "Datei existiert bereits" erscheint erst gar nicht.
Vielleicht noch ne Idee?
LG Andi
Anzeige
AW: Code für prüfen ob Datei bereits vorhanden ist
15.02.2018 17:14:08
UweD
dann versuch es mal so...

Sub Seite1_speichern()
    Dim Pfad As String, Dateiname As String, Ext As String
    
    Ext = ".pdf"
    
    Pfad = "D:\Daten\Test\"
    
    If Dir(Pfad, vbDirectory) = "" Then
    
        MsgBox "Pfad  '" & Pfad & "'  existiert nicht"
        Exit Sub
        
    End If
    
    
    
    Dateiname = Range("D5") & "_KW" & Range("AQ2") & "_" & Range("G5")
    
    
    ' Seite1_speichern Makro 
    If MsgBox("Wollen sie die aktuelle Kalenderwoche wirklich übermitteln?", vbYesNo + vbQuestion, _
        " Achtung ") = vbYes Then
        
        Do Until Dir(Pfad & Dateiname & Ext) = ""
        
            Dateiname = InputBox("Datei existiert schon", "Umbenennen in ", Dateiname)
        
        Loop
        
        ' speichert Tabelle unter Pfad und vorgegebenen Namen als pdf 
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pfad & Dateiname & Ext, _
            Quality:=xlQualityStandard, IncludeDocProperties:= _
            True, IgnorePrintAreas:=False, From:=1, To:=3, OpenAfterPublish:=True
    
 
        ' Erzeugt einen Übermittelt Stempel 
        ActiveSheet.Unprotect Password:="Alina1711"
        With Range("J33:O34")
            .FormulaR1C1 = "Übermittelt"
            With .Interior
                .Pattern = xlGray25
                .PatternColorIndex = xlAutomatic
                .Color = 65535
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
        End With
        Range("B25").Select
        ActiveSheet.Protect Password:="Alina1711"
    End If
 End Sub

LG UweD
Anzeige
AW: Code für prüfen ob Datei bereits vorhanden ist
15.02.2018 17:39:10
Andreas
Danke UweD,
genauso hab ich mir das vorgestellt, funktioniert einwandfrei!
Wär da im Leben nicht drauf gekommen. Tja, da ist noch viel zu lernen.
Auch vielen Dank an Peter(silie).
LG Andi
Danke für die Rückmeldung owT
15.02.2018 18:43:52
UweD
;

Forumthreads zu verwandten Themen

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

VBA: Überprüfen, ob eine Datei bereits vorhanden ist


Schritt-für-Schritt-Anleitung

Um in VBA zu prüfen, ob eine Datei vorhanden ist, kannst Du den folgenden Code verwenden. Dieser Code zeigt eine Meldung an, wenn die Datei bereits existiert und fragt nach einem neuen Namen:

Sub Seite1_speichern()
    Dim Pfad As String
    Dim Dateiname As String
    Dim Ext As String

    Ext = ".pdf"
    Pfad = "D:\Daten\Test\"

    If Dir(Pfad, vbDirectory) = "" Then
        MsgBox "Pfad '" & Pfad & "' existiert nicht"
        Exit Sub
    End If

    Dateiname = Range("D5") & "_KW" & Range("AQ2") & "_" & Range("G5")

    If MsgBox("Wollen sie die aktuelle Kalenderwoche wirklich übermitteln?", vbYesNo + vbQuestion, "Achtung") = vbYes Then
        Do Until Dir(Pfad & Dateiname & Ext) = ""
            Dateiname = InputBox("Datei existiert schon. Umbenennen in:", "Umbenennen in", Dateiname)
        Loop

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Pfad & Dateiname & Ext, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=3, OpenAfterPublish:=True

        ' Stempel setzen
        ActiveSheet.Unprotect Password:="Alina1711"
        With Range("J33:O34")
            .FormulaR1C1 = "Übermittelt"
            With .Interior
                .Pattern = xlGray25
                .Color = 65535
            End With
        End With
        ActiveSheet.Protect Password:="Alina1711"
    End If
End Sub

Häufige Fehler und Lösungen

  1. Fehler: "Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist."

    • Stelle sicher, dass der Pfad korrekt ist und dass die Datei nicht im Hintergrund von einem anderen Programm genutzt wird.
  2. Fehler: MsgBox erscheint nicht.

    • Vergewissere Dich, dass der Code korrekt in einem VBA-Modul eingefügt ist und dass die Bedingungen für die MsgBox auch tatsächlich erfüllt sind.
  3. Fehler: Die Datei wird trotzdem überschrieben.

    • Überprüfe den Codeblock, der die Dateipfade prüft. Stelle sicher, dass die Schleife korrekt arbeitet und den Dateinamen nur ändert, wenn die Datei vorhanden ist.

Alternative Methoden

Wenn Du keine VBA-Lösungen nutzen möchtest, kannst Du auch in Excel die Funktion =BEREICH.VERSCHIEBEN() verwenden, um zu überprüfen, ob eine Datei existiert. Diese Methode ist jedoch nicht so flexibel wie VBA.


Praktische Beispiele

  • Beispiel 1: Prüfen, ob eine PDF-Datei im Ordner vorhanden ist:
Dim Datei As String
Datei = "D:\Daten\Test\Beispiel.pdf"
If Dir(Datei) <> "" Then
    MsgBox "Die Datei ist vorhanden!"
Else
    MsgBox "Die Datei existiert nicht!"
End If
  • Beispiel 2: Überprüfen in einer Access-Datenbank:
If Dir("C:\Daten\Beispiel.accdb") <> "" Then
    MsgBox "Die Access-Datei ist vorhanden!"
Else
    MsgBox "Die Access-Datei existiert nicht!"
End If

Tipps für Profis

  • Nutze Funktionen wie PathExists, um das Überprüfen von Ordnern und Dateien zu vereinfachen.
  • Erstelle eine Fehlerbehandlung, um sicherzustellen, dass Dein Code auch bei unerwarteten Fehlern stabil bleibt.
  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind, was die Fehlersuche erleichtert.

FAQ: Häufige Fragen

1. Wie kann ich in Excel prüfen, ob eine Datei vorhanden ist, ohne VBA? Du kannst dies mit Formeln nicht direkt tun. Der einfachste Weg ist, VBA zu verwenden, um diese Überprüfung durchzuführen.

2. Was passiert, wenn ich Dir verwende und die Datei nicht existiert? Wenn die Datei nicht existiert, gibt die Funktion Dir einen leeren String zurück, was Du in Deinem Code abfangen kannst.

3. Wie kann ich den Speicherort für die Datei dynamisch anpassen? Du kannst den Speicherort über eine Eingabeaufforderung (InputBox) festlegen oder aus einer Zelle in Deinem Excel-Arbeitsblatt auslesen.

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