J'écris un VBA dans mon fichier Excel sample.xls. Maintenant je veux obtenir le chemin complet de sample.xls dans mon VBA. Comment fait-on ça?
Si vous voulez parler de VBA, vous pouvez utiliser FullName, par exemple:
strFileFullName = ThisWorkbook.FullName
(mis à jour en fonction des commentaires: l'ancien ActiveWorkbook.FullName
utilisé pourrait probablement être erroné, si d'autres fichiers Office pouvaient être ouverts et actifs. Mais si vous avez stocké la macro dans un autre fichier, comme mentionné par l'utilisateur @ utilisateur7296559 here et que vous voulez vraiment le nom du fichier utilisant la macro, ActiveWorkbook
pourrait être le bon choix s'il est garanti qu'il est actif au moment de l'exécution.)
c'est une alternative simple qui donne toutes les réponses, nom complet, chemin d'accès, nom de fichier.
Dim FilePath, FileOnly, PathOnly As String
FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
strScriptFullname = WScript.ScriptFullName
strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\"))
Si vous avez besoin de path only, c’est le moyen le plus simple:
PathOnly = ThisWorkbook.Path
ActiveWorkbook.FullName serait préférable, à mon avis, si vous avez la macro VBA stockée dans un autre classeur Excel, mais que vous souhaitez obtenir les détails de l’excel que vous modifiez, et non l’emplacement de la macro.
Si elles résident dans le même fichier, peu importe, mais si elles se trouvent dans des fichiers différents et que vous voulez que le fichier se trouve où les données se trouvent plutôt que celle où se trouve la macro, alors ActiveWorkbook est le meilleur choix, car avec les deux scénarios.
Il y a un moyen universel d'obtenir ceci:
Function FileName() As String
FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function