2016-09-22 3 views
1

У меня есть макрос, который получает данные подпапки. Однако я также хочу что-то из основной папки.Перейти на один уровень папки

Я посмотрел на How to get current working directory using vba?, но нужно изменить ActiveWorkbook путь:

Application.ActiveWorkbook.Path might be "c:\parent\subfolder" 

Я хотел бы

"c:\parent\" 

Использование Excel 365 VBA

ответ

4

Поскольку путь не может быть текущий рабочий каталог вам нужно извлечь путь из строки.

Найти последнюю \ и прочитать все символы слева:

ParentPath = Left$(Path, InStrRev(Path, "\")) 

Если вы работаете вокруг текущей директории ChDir ".." будет прыгать на один уровень вверх, новый путь может быть возвращен CurrDir.

+0

Должен сказать, что он всегда будет в рабочем каталоге (в данном случае!). Но хорошо знать! – indofraiser

+0

Попробуйте следующее: Left $ (application.ActiveWorkbook.Path, InStrRev (application.ActiveWorkbook.Path, "\") - 1) – Vityata

+0

Спасибо. Пятнистый Я бы поставил код линии и раньше! (По основному коду) – indofraiser

1

Самый надежный способ сделать это - использовать Scripting.FileSystemObject. У него есть метод, который получит родительскую папку, не пытаясь ее разобрать:

With CreateObject("Scripting.FileSystemObject") 
    Debug.Print .GetParentFolderName(Application.ActiveWorkbook.Path) 
End With 
Смежные вопросы