• 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.

Controleren of map bestaat

Status
Niet open voor verdere reacties.

Wampie Beukies

Gebruiker
Lid geworden
7 sep 2009
Berichten
88
hallo,

Om te controleren of een map reeds bestaat, heb ik de volgende code gevonden, maar hij geeft in alle gevallen aan dat de map reeds bestaat, dus ook wanneer dat niet zo is.

Code:
Sub NieuweMap()
'
' NieuweMap Macro
''
    Dim myValue As String
    Dim sFolderPath As String
    sFolderPath = "E:\Scauting\" & myValue
    
    myValue = InputBox("Voer het gewenste jaartal in")
    If Dir(sFolderPath, vbDirectory) <> vbNullString Then
        MsgBox "Deze map bestaat reeds"
    Else: MsgBox "Deze map bestaat nog niet"
       
    End If

End Sub

Wat klopt er niet?
 
Code:
sFolderPath = "E:\Scauting\" & myValue
    
myValue = InputBox("Voer het gewenste jaartal in")


Deze staan in de verkeerde volgorde. Je stelt nu eerst sFolderPath in en vraagt daarna om input.
 
En als je wilt dat de gebruiker alleen maar jaartallen mag invoeren, zou ik myValue als Integer definiëren, niet als String. En eventueel controleren of de input inderdaad een getal is of niet. En als slot: waarom maak je de map niet gelijk aan, als aan de voorwaarden (myValue = geldig jaartal) is voldaan? Wat moet je als gebruiker met die messagebox als de map niet bestaat? Op dezelfde regel waar nu de msgbox staat, kun je net zo goed een regel maken (met MkDir) die het pad aanmaakt, kun je gelijk verder met de code.
 
Die code heb ik er bijstaan OctaFish, maar die had ik eruit gehaald om een zo schoon mogelijke code te posten. De aanpassing naar Integer i.p.v. String zal ik ter harte nemen.
Waarvoor dank.
 
Merk op, dat de gegeven oplossing om te checken of een map bestaat ten onrechte aangeeft dat die map bestaat als de map erboven toevallig een bestand bevat met de mapnaam. Beter is deze functie:
Code:
Function DirectoryExists(Directory As String) As Boolean
    DirectoryExists = False
    If Len(Dir(Directory, vbDirectory)) > 0 Then
        If (GetAttr(Directory) And vbDirectory) = vbDirectory Then
            DirectoryExists = True
        End If
    End If
End Function
 
Waarbij je de regel DirectoryExists = False weg kan laten ;)
 
Het heeft even geduurd, maar zit nu naar deze code te kijken. Hoe verwerk ik dit in mijn code?
 
Zoiets:
Code:
Sub NieuweMap()
    sFolder = InputBox("Voer het gewenste jaartal in")
    If DirectoryExists("E:\Scauting\" & sFolder) Then
        MsgBox "Deze map bestaat reeds"
    Else
        MsgBox "Deze map bestaat nog niet"
    End If
End Sub

Function DirectoryExists(ByVal Directory As String) As Boolean
    If Len(Dir(Directory, vbDirectory)) > 0 Then
        If (GetAttr(Directory) And vbDirectory) = vbDirectory Then
            DirectoryExists = True
        End If
    End If
End Function
 
Ik zou me beperken tot (cfr. @Octa):

Code:
Sub M_snb()
    On Error Resume Next
    MkDir "E:\Scouting\" & InputBox("jaar")
End Sub

NB. Mijn spellingscorrectie kent geen scauting.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan