web-dev-qa-db-fra.com

Comment obtenir le nom/chemin du fichier Excel dans VBA

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?

24
Veera

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.)

33
Fionnuala

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))
9
APW
   strScriptFullname = WScript.ScriptFullName 
   strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\")) 
8
Mitch Wheat

Si vous avez besoin de path only, c’est le moyen le plus simple: 

PathOnly = ThisWorkbook.Path
3
Louis

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.

2
user7296559

Il y a un moyen universel d'obtenir ceci:

Function FileName() As String
    FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function
0