Подтвердить что ты не робот

Как получить имя/путь файла excel в VBA

Скажем, я пишу VBA внутри своего excel файла sample.xls. Теперь я хочу получить полный путь sample.xls в моем VBA. Как это сделать?

4b9b3361

Ответ 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