Скажем, я пишу VBA внутри своего excel файла sample.xls. Теперь я хочу получить полный путь sample.xls в моем VBA. Как это сделать?
Как получить имя/путь файла excel в VBA
Ответ 1
Если вы имеете в виду VBA, то вы можете использовать FullName, например:
strFileFullName = ThisWorkbook.FullName
(обновлено с учетом комментариев: ранее использовавшийся ActiveWorkbook.FullName
скорее всего, ошибался, если другие офисные файлы могут быть открыты (ed) и активны. Но в случае, если вы сохранили макрос в другом файле, как упомянуто пользователем @user7296559 здесь, и действительно нужно имя файла файла, использующего ActiveWorkbook
, ActiveWorkbook
может быть правильным выбором, если он гарантированно активен во время выполнения.)
Ответ 2
strScriptFullname = WScript.ScriptFullName
strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\"))
Ответ 3
Это простая альтернатива, которая дает все ответы: полное имя, путь, имя файла.
Dim FilePath, FileOnly, PathOnly As String
FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
Ответ 4
Если вам нужен только путь, это самый простой способ:
PathOnly = ThisWorkbook.Path
Ответ 5
ActiveWorkbook.FullName было бы лучше, я думаю, если у вас есть макрос VBA, хранящийся в другой книге Excel, но вы хотите получить информацию о Excel, который вы редактируете, а не о том, где находится макрос.
Если они находятся в одном файле, то это не имеет значения, но если они находятся в разных файлах и вам нужен файл, где находятся данные, а не где находится макрос, то ActiveWorkbook - это тот, потому что он имеет дело с обоими сценариями.
Ответ 6
Есть универсальный способ получить это:
Function FileName() As String
FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function