Як пройти шлях поточного робочого аркуша в VBA?


141

Я написав макрос як доповнення, і мені потрібно отримати шлях поточного робочого аркуша, на якому він виконується. Як це зробити? Як отримати шлях до файлу (лише каталог)?


ви маєте на увазі, що, даючи робочий аркуш, ви хочете знати папку, в якій зберігається батьківська робоча книга?
Матіас

Відповіді:


264

Використовуйте Application.ActiveWorkbook.Pathлише для самого шляху (без назви робочої книги) або Application.ActiveWorkbook.FullNameдля шляху з назвою робочої книги.


24
Активна книга залежить від того, яка робоча книжка активна. USe Thisworkbook.path
Алвін Міранда

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

2
Завжди має бути явним - якщо це робоча книжка, це має бути application.thisworkbook.path. Якщо це відкрита робоча книжка, ім'я повинно бути визначене набором, а потім application.Variablename.path (або fullpath, залежно).
Selkie

@Selkie Якщо код сам відкриває робочу книжку, то обов'язково. Але якщо це просто допоміжний макрос, який знаходиться в робочій книжці надбудови та повинен працювати над тією робочою книжкою, яку користувач наразі відкрив, коли він викликає макрос, тоді ActiveWorkbookце те, що потрібно.
BradC

3
Excel.ActiveWorkbook.Pathпрацює лише в тому випадку, якщо файл було збережено хоча б один раз. Крім того, якщо файл ніколи не зберігався, Excel.ActiveWorkbook.FullNameвін повертає лише ім'я файлу. Можливо, буде гарною ідеєю перевірити, чи збереглася книжка коли-небудь .
ChrisB

37

Завжди приємно мати:

Dim myPath As String     
Dim folderPath As String 

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

27

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.