map maken

Status
Niet open voor verdere reacties.

phobia

Terugkerende gebruiker
Lid geworden
4 sep 2006
Berichten
1.777
Ik ben bezich met een projectje en nu zou het handig zijn als ik via VBA een map op de harde schijf kan aanmaken.

bv. C:\Access\[project]\[gebruiker\[maand]

tussen de [] is dan een naam die in access word gegenereerd.

heeft iemand en ideetje of het kan en hoe ik het zou moeten aanpakken?
 
Daarvoor kun je bijgaande functies gebruiken:

Public Sub PadMaken(Path)
'Versie laatst bijgewerkt: 2-4-2008
Dim tempPad() As String, NieuwPad As String, i As Integer, X As Integer, Y As Integer, bCheck As Boolean
bCheck = False
NieuwPad = ""
X = 0
Y = 1
i = 1

If InStr(1, Path, "\") > 0 Then
Do Until InStr(Y, Path, "\") = 0
i = InStr(Y, Path, "\")
X = X + 1
ReDim Preserve tempPad(X)
tempPad(X) = Mid(Path, Y, i - Y)
Y = i + 1
Loop
End If

NieuwPad = tempPad(1) & "\"
For i = 1 To X
If PadBestaat(NieuwPad) = True Then
If i + 1 <= X Then NieuwPad = NieuwPad & tempPad(i + 1) & "\"
Else
bCheck = True
MkDir NieuwPad
If i + 1 <= X Then NieuwPad = NieuwPad & tempPad(i + 1) & "\"
End If
Next
If bCheck = True Then MsgBox "Map " & NieuwPad & " is aangemaakt", vbOKOnly, "Mappen aanmaken"

End Sub

De procedure gebruikt onderstaande functie om te controleren of een pad ook echt wel bestaat:

Function PadBestaat(PathName) As Boolean
'Versie laatst bijgewerkt: 2-4-2008

'Function returns TRUE if the specified file or folder exists, false if not.
'File usage : Provide full file path and extension
'Folder usage : Provide full folder path; Accepts with/without trailing "\" (Windows)
Dim iTemp As Integer

On Error Resume Next
iTemp = GetAttr(PathName)

Select Case Err.Number
Case Is = 0
PadBestaat = True
Case Else
PadBestaat = False
End Select

On Error GoTo 0

End Function

Je roept hem aan met: Call PadMaken(JouwNieuwePad)
Het maakt daarbij niet uit of je één niveau diep gaat, of 20, alle tussenliggende niet-bestaaande mappen worden netjes aangemaakt.

Je kunt de procedure+functie op een formulier hangen, of in een Module zetten. Dat laatste heeft als voordeel dat je hem op verschillende plekken kunt aanroepen.

Michel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan