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

Forumthread: Prüfen Datei vorhanden wenn nein erstellen

Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 10:50:32
Christof
Moin,
ich möchte gerne Prüfen, ob eine .xlsx datei vorhanden ist oder nicht. Wenn nicht, dann soll diese angelegt werden. Leider erzeugt mir VBA bisher immer nur einen Ordner.
Wer kann mir helfen?
If Dir("N:\Mitarbeiter\Kauer\" & Name & "\" & Name & " Index.xlsx") = "" Then
MkDir ("N:\Mitarbeiter\Kauer\" & Name & "\" & Name & " Index.xlsx")
End If

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 11:02:21
UweD
Hallo
MkDir erzeugt auch nur ein Verzeichnis.
- Willst du prüfen, ob die Datei existiert,
- oder/und ob das Vereichnis exitiert?
dann soll diese angelegt werden
- eine leere Datei?
- oder eine kopie der geöffneten?
LG UweD
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 11:05:35
Christof
Prüfen ob Datei existiert und dann eine leere Datei mit definiertem Namen anlegen
Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 11:16:54
UweD
Hallo
dann so...

Sub Makro2()
Dim Datei As String, NName As String
'NName = "Test"
Datei = "N:\Mitarbeiter\Kauer\" & NName & "\" & NName & " Index.xlsx"
If Dir(Datei) = "" Then
Workbooks.Add.SaveAs Filename:=Datei, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close
End If
End Sub

Tipp: verwende keine reservierten Befehle etc. von Excel als Variablennamen
LG UweD
Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 11:31:53
baschti007
Ich hätte noch diese Lösung =D
Gruß Basti

Const OrdnerName = "Test"
Const OrdnerPfad = "N:\Mitarbeiter\Kauer\" & OrdnerName & "\"
Const DateiName = OrdnerName & " Index.xlsx"
Sub Pruefen()
If Dir(OrdnerPfad & DateiName)  "" Then
If MsgBox("Soll die vorhandene Datei geöffnet werden?", vbOKCancel, "Meldung1") = vbOK Then
Workbooks.Open OrdnerPfad & DateiName
Exit Sub
Else
Exit Sub
End If
Else
If Dir(OrdnerPfad)  "" Then
Call Dateierstellen
MsgBox "Datei wurde erstellt!!"
Else
MkDir (OrdnerPfad)
Call Dateierstellen
MsgBox "Ordner und Datei wurden erstellt!!"
End If
End If
End Sub
Sub Dateierstellen()
Dim objExcel As Object
Set objExcel = CreateObject("Excel.Application")
With objExcel
.Visible = False
.Workbooks.Add
.ActiveWorkbook.SaveAs OrdnerPfad & DateiName
.Quit
End With
Set objExcel = Nothing
End Sub

Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 11:12:40
ChrisL
Hi Christof
Sub t()
Dim sPfad As String, sName As String
Dim WB As Workbook
sPfad = "N:\Mitarbeiter\Kauer"
sName = "TestKunde"
If Dir(sPfad) = "" Then MkDir (sPfad & "\" & sName)
If Dir(sPfad & "\" & sName & "\" & sName & " Index.xlsx") = "" Then
Set WB = Workbooks.Add
WB.SaveAs sPfad & "\" & sName & "\" & sName & " Index.xlsx"
Else
WB.Open sPfad & "\" & sName & "\" & sName & " Index.xlsx"
End If
End Sub

cu
Chris
Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 11:19:57
ChrisL
Korrektur Flüchtigkeitsfehler:
Sub t()
Dim sPfad As String, sName As String
Dim WB As Workbook
sPfad = "N:\Mitarbeiter\Kauer"
sName = "TestKunde"
If Dir(sPfad & "\" & sName & "\") = "" Then MkDir (sPfad & "\" & sName)
If Dir(sPfad & "\" & sName & "\" & sName & " Index.xlsx") = "" Then
Set WB = Workbooks.Add
WB.SaveAs sPfad & "\" & sName & "\" & sName & " Index.xlsx"
Else
Set WB = Workbooks.Open(sPfad & "\" & sName & "\" & sName & " Index.xlsx")
End If
End Sub

cu
Chris
Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 12:59:31
Christof
Leider kommt es bei mir jetzt immer die Meldung : Fehler beim Zugriff auf Pfad/datei.
Und es wird das MkDir(sPfad & "\" & sName markiert.
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 13:06:06
ChrisL
Ich bekomme keinen Fehler.
(Copy/Paste Fehler, Backslash zu viel)
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 14:50:55
Christof
Ich hab es an meine Bedürfnisse angepasst aber evtl. findet ja jemand woran es liegt. (fehler kommt nur wenn Ordner besteht.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$9" Then
Dim OrdnerName As String
OrdnerName = Right(Sheets("SCHADENBUCH").Cells(9, 3).Value, 4)
Dim SchadenNr As String
Dim Pfad As String
Dim Datei As String
Dim Tabelle As String
Dim bereich As String
Dim CountAErg As Double
Dim Ziel As String
Dim WB As Workbook
Pfad = "N:\Mitarbeiter\Kauer\" & OrdnerName
Datei = OrdnerName & " Index.xlsx"
'Tabelle = "Tabelle1"
'bereich = "$A:$A"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Dir(Pfad) = "" Then MkDir (Pfad)
If Dir(Pfad & "\" & Datei) = "" Then
Set WB = Workbooks.Add
WB.SaveAs Pfad & "\" & Datei
Else
GoTo DateiBesteht
End If
Workbooks.Open (Pfad & "\" & Datei)
Workbooks(Datei).Sheets(1).Name = OrdnerName
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 1).Value = "Schadennummer"
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 1).Font.Bold = True
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 2).Value = "Schiffsname"
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 2).Font.Bold = True
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 3).Value = "Schadendatum"
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 3).Font.Bold = True
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 4).Value = "Betreuer"
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 4).Font.Bold = True
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 5).Value = "Mandant"
Workbooks(Datei).Sheets(OrdnerName).Cells(1, 5).Font.Bold = True
Workbooks(Datie).Save
Workbooks(Datei).Close
Application.DisplayAlerts = True
DateiBesteht:
Workbooks.Open (Pfad & "\" & Datei)
CountAErg = Workbooks(Datei).Sheets(OrdnerName).Range("A" & Rows.Count).End(xlUp).Row + 1
SchadenNr = Workbooks(Datei).Sheets(OrdnerName).Range("A" & CountAErg).Value
Workbooks(Datei).Close
Application.ScreenUpdating = False
Cells(11, 5).Value = SchadenNr & "/" & Right(Sheets("SCHADENBUCH").Cells(9, 3).Value, 2)
End If
End Sub

Anzeige
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 16:23:01
ChrisL
OK, da fehlt noch was...
If Dir(Pfad, vbDirectory) = "" Then MkDir (Pfad)
AW: Prüfen Datei vorhanden wenn nein erstellen
10.10.2016 16:27:53
Christof
Vielen Dank,
mein persönlicher Held des Tages :D
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Prüfen und Erstellen von Dateien in Excel VBA


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob eine Datei vorhanden ist und sie gegebenenfalls zu erstellen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject", wähle "Einfügen" und dann "Modul".
  3. Gib den folgenden Code ein:
Sub DateiPruefenUndErstellen()
    Dim Datei As String
    Dim Ordner As String
    Dim NName As String

    NName = "Test"
    Ordner = "N:\Mitarbeiter\Kauer\" & NName & "\"
    Datei = Ordner & NName & " Index.xlsx"

    ' Prüfen ob das Verzeichnis existiert
    If Dir(Ordner, vbDirectory) = "" Then MkDir Ordner

    ' Prüfen ob die Datei existiert
    If Dir(Datei) = "" Then
        Workbooks.Add.SaveAs Filename:=Datei, FileFormat:=xlOpenXMLWorkbook
        MsgBox "Datei wurde erstellt!"
    Else
        MsgBox "Datei ist bereits vorhanden."
    End If
End Sub
  1. Führe das Makro aus: Klicke auf F5 oder gehe zu "Ausführen" > "Sub/UserForm ausführen".

Häufige Fehler und Lösungen

  • Fehler beim Zugriff auf Pfad/Datei: Überprüfe den angegebenen Pfad. Stelle sicher, dass der Ordner existiert und dass du die nötigen Berechtigungen hast.

  • Datei wird nicht erstellt: Stelle sicher, dass du den richtigen Dateipfad und Dateinamen verwendest. Wenn das Verzeichnis bereits existiert, wird die Datei nicht erstellt.

  • MkDir erzeugt nur Ordner: Achte darauf, dass du den Dir-Befehl korrekt verwendest, um zu überprüfen, ob die Datei existiert, bevor du versuchst, sie zu erstellen.


Alternative Methoden

Es gibt verschiedene Möglichkeiten, um in Excel VBA zu prüfen, ob eine Datei vorhanden ist:

  1. Über die FileSystemObject-Bibliothek:

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FileExists(Datei) Then
       ' Datei erstellen
    End If
  2. Direkte Verwendung von Open:

    On Error Resume Next
    Open Datei For Input As #1
    If Err.Number <> 0 Then
       ' Datei erstellen
    End If
    Close #1
    On Error GoTo 0

Praktische Beispiele

Hier sind einige nützliche Beispiele:

  • Einfache Dateiüberprüfung:

    Sub PruefenDatei()
       If Dir("N:\Mitarbeiter\Kauer\Test Index.xlsx") = "" Then
           MsgBox "Datei nicht gefunden."
       Else
           MsgBox "Datei ist vorhanden."
       End If
    End Sub
  • Datei erstellen, wenn nicht vorhanden:

    Sub DateiErstellen()
       If Dir("N:\Mitarbeiter\Kauer\Test Index.xlsx") = "" Then
           Workbooks.Add.SaveAs "N:\Mitarbeiter\Kauer\Test Index.xlsx"
       End If
    End Sub

Tipps für Profis

  • Verwende explizite Variablennamen: Vermeide reservierte Begriffe von Excel als Variablennamen, um Verwirrung zu vermeiden.

  • Fehlerbehandlung einbauen: Nutze On Error-Anweisungen, um mögliche Fehler beim Zugriff auf Dateien besser zu handhaben.

  • Verzeichnisse dynamisch erstellen: Überlege, wie du Ordnerstrukturen dynamisch anpassen kannst, um die Wartung deines Codes zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob eine Datei in VBA vorhanden ist? Du kannst dies mit dem Dir-Befehl tun. Wenn Dir(Dateipfad) = "" zurückgibt, existiert die Datei nicht.

2. Was passiert, wenn die Datei bereits existiert? Wenn die Datei vorhanden ist, kannst du entscheiden, ob du sie öffnen oder eine neue Datei erstellen möchtest. Der Beispielcode zeigt, wie du dies umsetzen kannst.

3. Welche Version von Excel benötige ich für diese Beispiele? Die Beispiele sind für Excel 2010 und neuere Versionen geeignet. Stelle sicher, dass du die richtigen Berechtigungen im Netzwerk hast, um auf die angegebenen Pfade zuzugreifen.

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