基本校验参考Public Function fnIsURL(strURL As String, _
        Optional strRtnNetURL As String, Optional IsRootPath As Boolean, _
        Optional IsWebURL As Boolean, Optional Protocol As String, _
        Optional IsConvertPathDelimeter As Boolean, _
        Optional PathDelimeter As String) As Boolean
        
    Dim pos As Long
    
    fnIsURL = True
    
    If InExists(strURL, "http:///", 1, pos) Then
        Protocol = "http:///"
        IsWebURL = False
        fnIsURL = False
    ElseIf InExists(strURL, "http://", 1, pos) Then
        Protocol = "http://"
        IsWebURL = IIf(pos = 1, True, False)
        If IsWebURL Then strRtnNetURL = Mid(strURL, pos + 7)
    ElseIf InExists(strURL, "ftp://", 1, pos) Then
        Protocol = "ftp://"
        IsWebURL = IIf(pos = 1, True, False)
        If IsWebURL Then strRtnNetURL = Mid(strURL, pos + 6)
    ElseIf InExists(strURL, "pnm://", 1, pos) Then
        Protocol = "pnm://"
        IsWebURL = IIf(pos = 1, True, False)
        If IsWebURL Then strRtnNetURL = Mid(strURL, pos + 6)
    ElseIf InExists(strURL, "mms://", 1, pos) Then
        Protocol = "mms://"
        IsWebURL = IIf(pos = 1, True, False)
        If IsWebURL Then strRtnNetURL = Mid(strURL, pos + 6)
    ElseIf InExists(strURL, "rtsp://", 1, pos) Then
        Protocol = "rtsp://"
        IsWebURL = IIf(pos = 1, True, False)
        If IsWebURL Then strRtnNetURL = Mid(strURL, pos + 7)
    ElseIf InExists(strURL, "file:///", 1, pos) Then
'        Protocol = "file:///"
        IsWebURL = IIf(pos = 1, False, True)
        If Not IsWebURL Then strRtnNetURL = Mid(strURL, pos + 8)
    ElseIf InExists(strURL, "file://", 1, pos) Then
'        Protocol = "file://"
        IsWebURL = IIf(pos = 1, False, True)
        If Not IsWebURL Then strRtnNetURL = Mid(strURL, pos + 7)
    ElseIf InExists(strURL, "file:", 1, pos) Then
'        Protocol = "file:"
        IsWebURL = IIf(pos = 1, False, True)
        If Not IsWebURL Then strRtnNetURL = Mid(strURL, pos + 5)
    ElseIf Len(strURL) >= 3 Then
        IsWebURL = False
        If InExists(fnGetDriveString, Left(strURL, 3)) Then
            strRtnNetURL = strURL
        Else
            fnIsURL = False
        End If
    Else
        IsWebURL = False
        fnIsURL = False
    End If
    
    If fnIsURL Then
        If Len(PathDelimeter) = 0 Then PathDelimeter = IIf(IsWebURL, "/", "\")
        strRtnNetURL = Replace(strRtnNetURL, "?", PathDelimeter)
        strRtnNetURL = ReplaceSCharsInURL(strRtnNetURL)
        If IsConvertPathDelimeter Then
            strRtnNetURL = Replace(strRtnNetURL, "/", PathDelimeter)
            strRtnNetURL = Replace(strRtnNetURL, "\", PathDelimeter)
        ElseIf Not IsWebURL Then
            strRtnNetURL = Replace(strRtnNetURL, "/", PathDelimeter)
        End If
        
        If InCount(strRtnNetURL, PathDelimeter) = 0 Then
            IsRootPath = True
        ElseIf InCount(strRtnNetURL, PathDelimeter) = 1 Then
            If Right(strRtnNetURL, 1) = PathDelimeter Then IsRootPath = True
        End If
    End If
    
End FunctionFunction InExists(ByVal Source As Variant, ByVal Target As String, _
            Optional ByVal Compare As Integer = CASE_INSENSITIVE, _
            Optional Return_pos As Long) As Boolean
    Return_pos = InStr(1, Source, Target, Compare)
    InExists = (Return_pos > 0)
End Function