作成した次の関数を使用して、URL を WebDAV アドレスに変換します。この関数は、通常のシステム パスと UNC パスも無傷で返します。
この関数を VBA プロジェクトのモジュールに追加しMyNewPathString = Parse_Resource(myFileDialogStringVariable)
、ファイル ダイアログ コマンドの直後、ファイル ダイアログで選択されたパスを使用する前に入力して、この関数を呼び出します。次に、ターゲット ファイルの場所を使用するときに「MyNewPathString」を参照します。
Public Function Parse_Resource(URL As String)
'Uncomment the below line to test locally without calling the function & remove argument above
'Dim URL As String
Dim SplitURL() As String
Dim i As Integer
Dim WebDAVURI As String
'Check for a double forward slash in the resource path. This will indicate a URL
If Not InStr(1, URL, "//", vbBinaryCompare) = 0 Then
'Split the URL into an array so it can be analyzed & reused
SplitURL = Split(URL, "/", , vbBinaryCompare)
'URL has been found so prep the WebDAVURI string
WebDAVURI = "\\"
'Check if the URL is secure
If SplitURL(0) = "https:" Then
'The code iterates through the array excluding unneeded components of the URL
For i = 0 To UBound(SplitURL)
If Not SplitURL(i) = "" Then
Select Case i
Case 0
'Do nothing because we do not need the HTTPS element
Case 1
'Do nothing because this array slot is empty
Case 2
'This should be the root URL of the site. Add @ssl to the WebDAVURI
WebDAVURI = WebDAVURI & SplitURL(i) & "@ssl"
Case Else
'Append URI components and build string
WebDAVURI = WebDAVURI & "\" & SplitURL(i)
End Select
End If
Next i
Else
'URL is not secure
For i = 0 To UBound(SplitURL)
'The code iterates through the array excluding unneeded components of the URL
If Not SplitURL(i) = "" Then
Select Case i
Case 0
'Do nothing because we do not need the HTTPS element
Case 1
'Do nothing because this array slot is empty
Case 2
'This should be the root URL of the site. Does not require an additional slash
WebDAVURI = WebDAVURI & SplitURL(i)
Case Else
'Append URI components and build string
WebDAVURI = WebDAVURI & "\" & SplitURL(i)
End Select
End If
Next i
End If
'Set the Parse_Resource value to WebDAVURI
Parse_Resource = WebDAVURI
Else
'There was no double forward slash so return system path as is
Parse_Resource = URL
End If
End Function
この関数は、ファイル パスが URL であるかどうか、および安全な (HTTPS) か安全でない (HTTP) かをチェックします。URL の場合、適切な WebDAV 文字列が作成されるため、SharePoint 内のターゲット ファイルに直接リンクできます。
ユーザーが SharePoint ファームと同じドメインにいない場合は特に、ファイルを開くたびに資格情報の入力を求められる可能性があります。
注: http サイトでこれをテストしていませんが、動作することを確信しています。