Как получить путь к текущему листу в VBA?


147

Я написал макрос как надстройку, и мне нужно получить путь к текущему листу, на котором он выполняется. Как мне это сделать? Как мне получить путь к файлу (только каталог)?


Вы имеете в виду, что, учитывая рабочий лист, вы хотите знать папку, в которой сохранена родительская книга?
Матиас

Ответы:


272

Используйте Application.ActiveWorkbook.Pathтолько для самого пути (без имени книги) или Application.ActiveWorkbook.FullNameдля пути с именем книги.


25
Активная книга зависит от того, какая книга активна. Используйте Thisworkbook.path
Алвин Миранда

6
Оба, конечно, полезны в разных ситуациях. Я решил, что исходный вопрос означает, что макрос находится в книге надстройки (которая будет называться ThisWorkbook.path), но должен запускать код для других книг по мере необходимости пользователя (это будет ActiveWorkbook.path).
BradC 03

2
Всегда должно быть явным - если это эта книга, это должен быть application.thisworkbook.path. Если это открытая книга, имя должно быть определено с помощью набора, затем application.Variablename.path (или полного пути, в зависимости от того, что).
Selkie

@Selkie Если код сам открывает книгу, то обязательно. Но если это просто вспомогательный макрос, который находится в книге надстройки и должен работать с той книгой, которую пользователь в данный момент открывает при вызове макроса, то ActiveWorkbookэто то, что необходимо.
BradC

4
Excel.ActiveWorkbook.Pathработает только в том случае, если файл был сохранен хотя бы один раз. Кроме того, если файл никогда не сохранялся, Excel.ActiveWorkbook.FullNameвозвращается только имя файла. Возможно, стоит проверить, сохранялась ли когда-либо книга .
ChrisB

36

Всегда приятно иметь:

Dim myPath As String     
Dim folderPath As String 

folderPath = Application.ActiveWorkbook.Path    
myPath = Application.ActiveWorkbook.FullName

28

Если вы хотите получить путь к книге, из которой выполняется макрос - используйте Application.ThisWorkbook.Path.
Application.ActiveWorkbook.Pathможет иногда приводить к неожиданным результатам (например, если ваш макрос переключается между несколькими книгами).


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.