それはおそらく最善の方法ではありません。しかし、絶対パスを取得するために私が見つけた唯一のことは、構文 .. が文字列に含まれていた回数を計算し、その構文がハイパーリンクアドレスに含まれる回数だけ関数 gotoparent を使用することです。(私の場合、私のフィールドはハイパーリンク アドレスです。PS: このコードには、Microsoft Scripting Runtime への参照が必要です。
Function AbsolutePath(strRelativePath As String, strCurrentFileName As String) As String
Dim fso As Object
Dim strCurrentProjectpath As String
Dim strGoToParentFolder As String
Dim strOrigineFolder As String
Dim strPath As String
Dim lngParentFolder As Long
''Pour retrouver le répertoire parent
Set fso = CreateObject("Scripting.FileSystemObject")
'' détermine le répertire du projet actif
strCurrentProjectpath = CurrentProject.Path
'' détermine le nom du répertoire dans lequel le fichier d'origine se trouve
strOrigineFolder = Replace(Replace(Replace(strRelativePath, strCurrentFileName, ""), "..", ""), "\", "")
''Extraction du chemin relatif (ex. ..\..\..)
strGoToParentFolder = Replace(Replace(strRelativePath, strOrigineFolder, ""), strCurrentFileName, "")
''retourne le nombre de fois qu'il faut remonter au répertoire parent
lngParentsFolder = Len(Replace(strGoToParentFolder, "\", "")) / 2
''détermine la valeur d'origine du répertoire du début
strPath = strCurrentProjectpath
Vérifie s 'il faut aller au répertoire parent
If lngParentsFolder < 1 Then
'si non, alors répertoire parent et répertoire d'origine du fichier
strPath = strCurrentProjectpath & "\" & strOrigineFolder
Else
''si oui, nous faisons la boucle pour retourner au répertoire d'origine
For i = 1 To lngParentsFolder
strPath = fso.GetParentFolderName(strPath)
Next i
End If
''retournons le répertoire parent du fichier et son répertoire d'origine [le OUTPUT]
AbsolutePath = strPath & strOrigineFolder & "\"
End Function