API-Funktionen erwarten in der Regel eine in Anführungszeichen eingeschlossene Pfadangabe zu einem Ordner oder einer Datei, wenn der Pfad Leerzeichen enthält. Allerdings sollten Sie nicht unbedingt "rein vorsorglich" jeden Pfad in Anführungszeichen einschließen, da manche API- und VB-Funktionen empfindlich reagieren, wenn die Pfadangabe zuvor bereits (aus welchem Grund auch immer) beidseitig oder einseitig in Anführungszeichen eingeschlossen war.
Die folgende Hilfs-Funktion stellt das Einschließen in Anführungszeichen sicher und hilft, Pannen wegen verdoppelten oder einseitigen Anführungszeichen zu vermeiden. Sie übergeben Ihr den Pfad und erhalten ihn fein säuberlich in Anführungszeichen eingeschlossen zurück, wenn er Leerzeichen enthält. Setzen Sie zusätzlich den optionalen Parameter ForceQuotes auf True, wird der Pfad in jedem Fall in Anführungszeichen eingeschlossen.
Public Function QuotedPath(Path As String, _
Optional ByVal ForceQuotes As Boolean) As String
Dim l As Long
Dim nLen As Long
Dim nLeft As Long
Dim nRight As Long
nLen = Len(Path)
For l = 1 To nLen
If Mid$(Path, l, 1) <> """" Then
nLeft = l - 1
Exit For
End If
Next 'l
For l = nLen To 1 Step -1
If Mid$(Path, l, 1) <> """" Then
nRight = l + 1
Exit For
End If
Next 'l
If CBool(InStr(Path, " ")) Or ForceQuotes Then
If nLeft < 1 Then
If nRight > nLen Then
QuotedPath = """" & Path & """"
Else
QuotedPath = """" & Left$(Path, nRight)
End If
Else
If nRight > nLen Then
QuotedPath = Mid$(Path, nLeft) & """"
Else
QuotedPath = Mid$(Path, nLeft, nRight - nLeft + 1)
End If
End If
Else
If nLeft < 1 Then
If nRight > nLen Then
QuotedPath = Path
Else
QuotedPath = Left$(Path, nRight - 1)
End If
Else
If nRight > nLen Then
QuotedPath = Mid$(Path, nLeft + 1)
Else
QuotedPath = Mid$(Path, nLeft + 1, nRight - nLeft - 1)
End If
End If
End If
End Function
|