• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

foutmelding aanmaken directory

  • Onderwerp starter Onderwerp starter vrouw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

vrouw

Terugkerende gebruiker
Lid geworden
27 mrt 2010
Berichten
1.542
Ik gebruik onderstaande code om een bestand in een map op te slaan als het bestand word gesloten.
Echter krijg ik een foutmelding als de map al bestaat.
Hoe kan ik dat oplossen?

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
MkDir "c:\Temp\" & Dirname
    MyFileName = "C:\Temp\posten & voorraadbestand.xlsx"
    If Len(Dir(MyFileName)) Then
        SetAttr MyFileName, vbNormal
        Kill MyFileName
    End If
    Application.DisplayAlerts = False
     ActiveWorkbook.SaveAs MyFileName, FileFormat:=51
     SetAttr MyFileName, vbReadOnly
End Sub
 
Beter?
Code:
 If Dir("c:\Temp\" & Dirname) = "" Then MkDir "c:\Temp\" & Dirname
 
Maak er even dit van:
Code:
 If Dir("c:\Temp\" & Dirname, VbDirectory) = "" Then MkDir "c:\Temp\" & Dirname
 
Gebruik deze functie:
Code:
Function FolderExists(strPath As String) As Boolean
    On Error Resume Next
    FolderExists = ((GetAttr(strPath) And vbDirectory) = vbDirectory)
End Function

De Dir functie samen met vbDirectory geeft namelijk een "false positive" als er in de hoger liggende map een bestand staat met de naam van de laatste subfolder.
Dus als er in map c:\folder GEEN subfolder is maar wel een bestand met de naam subfolder, dan geeft Dir wel een resultaat terwijl de subfolder niet bestaat.
 
Laatst bewerkt:
Misschien een alternatief:
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim DirName As String, MyFileName As String
DirName = "Blabla"
Application.DisplayAlerts = False
CreateObject("shell.application").Namespace("C:\").NewFolder "Temp\" & DirName & "\"
    MyFileName = "C:\Temp\" & DirName & "\posten & voorraadbestand.xlsx"
    If Len(Dir(MyFileName)) Then
        SetAttr MyFileName, vbNormal
        Kill MyFileName
    End If
    ThisWorkbook.SaveAs MyFileName, 51
     SetAttr MyFileName, vbReadOnly
   Application.DisplayAlerts = True
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan