Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sporadischer Abbruch bei MkDir Befehl

Sporadischer Abbruch bei MkDir Befehl
23.06.2023 14:45:51
Markus

Hallo zusammen,

könnte ihr mir bitte mal bei folgendem Problem helfen?
Mit nachfolgendem VBA Code möchte ich einen Ordner erstellen, dessen Pfad in der Variable Pfad_Ordner_global gespeichert ist.
Wenn der Ordner bereits existiert, soll dieser ohne Hinweis oder Abfrage inkl. Inhalt gelöscht und mit dem selben Namen neu erstellt werden.
Das Makro funktionier einwandfrei, wenn es den Ordner noch nicht gibt. Existiert dieser schon, bricht das Mako sporadisch (!) bei Ausführung des Befehls MkDir Pfad_Ordner_global mit der Fehlermeldung "VBA Fehler beim Zugriff auf Pfad/Datei" ab. Führe ich das Makro anschließend erneut aus, funktioniert wieder alles.
Mit der For Next Schleife habe ich versucht, die Zeit zwischen Löschen des bereits vorhandenen Ordner und der Neuerstellung dessen zu verzögern, allerdings ohne Erfolg.

Nun bin ich überfragt...habt ihr eine Lösung bzw. den Grund, weswegen manchmal ein Abbruch erfolgt?



Sub BestellOrdnerErzeugen()

'Variablendimensionierung
Dim objFSO As Object
Dim i As Long

'Objekterstellung
Set objFSO = CreateObject("Scripting.FileSystemObject")


'Prüfen, ob der anzulegende Bestellordner bereits existiert und diesen ggf. löschen und/oder neu erstellen
If Dir(Pfad_Ordner_global, vbDirectory) > "" Then
On Error GoTo Hinweis
objFSO.DeleteFolder Pfad_Ordner_global
On Error GoTo 0
End If

For i = 1 To 10000
DoEvents
Next i

MkDir Pfad_Ordner_global

'Ressourcenfreigabe
Set objFSO = Nothing

Exit Sub
Hinweis:
MsgBox ("Fehler! Bitte alle offenen Dateien aus dem Bestellordner schließen und Makro erneut starten.")
End
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sporadischer Abbruch bei MkDir Befehl
23.06.2023 15:57:36
Ulf
Hallo Markus,
kommt bei I/O immer mal vor
have it a try
In Modul

Option Explicit

Public intTries As Integer
Public bWeiter As Boolean
'von mir gesetzt
'Public Const Pfad_Ordner_global = "C:\Users\...\Documents\irgendwas_probieren\Herber\Aktuell\test"

Sub BestellOrdnerErzeugen()
    Dim objFSO As Object
    Dim i As Long
    intTries = 0
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FolderExists(Pfad_Ordner_global) Then  'Dir(Pfad_Ordner_global, vbDirectory) > "" Then
        On Error GoTo Hinweis
        objFSO.DeleteFolder Pfad_Ordner_global, True
        On Error GoTo 0
    End If
    checkWeiter
    Do Until bWeiter
        DoEvents
        If intTries >= 3 Then
            Set objFSO = Nothing
'evtl ändern            
            Exit Sub
        Else
            DoEvents
        End If
    Loop
    objFSO.CreateFolder Pfad_Ordner_global
    Set objFSO = Nothing
    Exit Sub
Hinweis:
    MsgBox ("Fehler! Bitte alle offenen Dateien aus dem Bestellordner schließen und Makro erneut starten.")
    End
End Sub

Public Sub checkWeiter()
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    intTries = intTries + 1
    bWeiter = objFSO.FolderExists(Pfad_Ordner_global)
    If (Not bWeiter) And intTries  3 Then
        Application.OnTime Now + TimeValue("00:00:30"), "checkWeiter", Now + TimeValue("00:00:40")
    Else
        objFSO.DeleteFolder Pfad_Ordner_global, True
    End If
    Set objFSO = Nothing
End Sub
hth
Ulf


Anzeige
AW: Sporadischer Abbruch bei MkDir Befehl
23.06.2023 16:01:56
Ulf
Es fehlt die Fehlerbehandlung in der Subroutine !


AW: Sporadischer Abbruch bei MkDir Befehl
23.06.2023 16:30:46
snb
Scheint mir viel zu aufwändig:

Sub M_snb()
   if dir("G:\OF\",16)="" then md "G:\OF"
End Sub 


AW: Sporadischer Abbruch bei MkDir Befehl
23.06.2023 16:43:53
volti
Hallo Markus,

als Alterative....

Ich erstelle Ordner meist mit dieser Funktion.
Man gibt hier den kompletten gewünschten Pfad incl. Unterordner an und muss nicht erst Vorderordner erstellen.
Es ist hierbei auch egal, ob der Ordner schon existiert, es funktioniert ohne Fehlermeldung.

Die Funktion kann auch eine Fehlermeldung zurückgeben, die man auswerten kann, falls man doch wissen möchte,ob der Ornder schon existent war usw.

Code:


Private Declare PtrSafe Function SHCreateDirectoryExW Lib "Shell32.dll" ( _ ByVal hwnd As LongPtr, ByVal pszPath As LongPtr, ByVal psa As LongPtr) As Long Sub ErstelleOrdner() Dim sPfad As String SHCreateDirectoryExW 0, StrPtr(sPfad & "\"), 0 End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz



Anzeige
AW: Sporadischer Abbruch bei MkDir Befehl
23.06.2023 16:58:48
Ulf
Hi Karl-Heinz
ja der ist feiner, das nützt in dem Fall nur deshalb nichts, weil entweder noch Dateien im Ordner offen sind, Schreibschutz auf Datei o.ä.
Verstehe den TE so, dass in einem Ordner Dateien zur Verarbeitung in Shop/Fibu/Wawi erstellt werden und die pure Erstellung des Ordners nicht die alleinige Aufgabe ist.
Vlt ist es auch eine lahmes Netz / NAS / Onedrive und braucht länger für I/O.
Persönlich würde ich auch mit SH arbeiten, mal abwarten was Markus meint
ty


AW: Sporadischer Abbruch bei MkDir Befehl
23.06.2023 17:34:14
volti
Hi Ulf,

danke....

Hatte mir das Problem jetzt nicht so genau angesehen. :-(
Wie Du schon sagst, mal sehen was der TE sagt.

Gruß KH


Anzeige
AW: Sporadischer Abbruch bei MkDir Befehl
24.06.2023 18:36:58
snb
2. er Vorschlag:

Sub M_snb()
  c00 = "G:\OF\"
  If Dir(c00, 16) = "" Then Shell "cmd /c md " & c00, 0
  If Dir(c00) > "" Then Kill c00 & "*.*"
End Sub


AW: Sporadischer Abbruch bei MkDir Befehl
25.06.2023 12:47:49
Markus
Hallo zusammen,
danke an dieser Stelle schon mal für eure hilfreichen Tipps!
Ich muss vllt. noch erwähnen, dass u.a. die gepostete Subroutine zu meinem ersten VBA-Makro zählt...ich bin daher noch nicht wirklich erfahren.
Zum Thema:
Ich möchte einen Ablauf automatisieren. Im Zuge dessen wird eine E-Mail in Outlook ausgewählt, der entsprechende Betreff extrahiert und aus dem Betrefftext (+zusätzliche Infos) ein Ordner angelegt, in dem die Mail als auch die Anhänge zur weiteren Bearbeitung gespeichert werden. Führt der Anwender das Makro versehentlich 2 mal hintereinander aus, soll der im 1. Lauf erstellte Ordner und die darin abgelegten Dateien ausnahmslos entfernt und von Grund auf neu erstellt werden. Beim Speicherort handelt es sich um einen Pfad, der mit Onedrive synchronisiert wird, vllt. liegt auch hier das Problem.
Ich werde auf alle Fälle eure Lösungen ausprobieren und schauen, ob ich den Fehler damit beheben kann.

VG Markus


Anzeige
AW: Sporadischer Abbruch bei MkDir Befehl
26.06.2023 16:34:10
Pappawinni
Vielleicht müsstest du die Synchronisation vor deinen Aktionen anhalten und nachher wieder starten. Ich hab dazu allerdings keinen Code. Der Google hat das aber bestimmt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige