Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Как определить имя директории (диска) открытой книги Ексель?

Автор uatotal, 24.05.2012, 09:35

« назад - далее »

uatotal

Подскажите пожалуйста - как определить имя директории (диска) для открытой книги Ексель?

Есть открытый файл E:\Мои документы\01 ВИД\01 Inv\ХХХ\Rd_invoice.xlsm
где    ХХХ - название папки (разные могут быть)
и      E:\ - диск может меняться в зависимости от компа на котором открыта книга

при выполнении в нем макроса нужно открыть книгу (записать в нее необходимые данные и сохранить)
all_invoice.xlsm
которая ВСЕГДА находится уровнем выше  в  E:\Мои документы\01 ВИД\01 Inv\all_invoice.xlsm

Как это выполнить макросом ВБА?

Применяю код
    FileDir = ThisWorkbook.Path
    Sheets("Invoice").Select
    Cells(7, 11).Select
    ActiveCell.formula = FileDir
Получаю путь

E:\Мои документы\01 ВИД\01 Inv\ХХХ

А как получить только название диска?
E:\

Тогда можно было бы его подвязать под стабильный дальнейший путь
Мои документы\01 ВИД\01 Inv\all_invoice.xlsm

Гуглил, но кроме ThisWorkbook.Path  ничего не нарыл...
Подскажите народ кто знает.

Poltava

ЦитироватьПодскажите пожалуйста - как определить имя директории (диска) для открытой книги Ексель?
ЦитироватьFileDir = ThisWorkbook.Path
Прекратите сами отвечать на свои вопросы :)
Да и вообще если честно то я так и не понял что вам нужно, то ли готовый макрос то ли часть макроса открывающая и закрывающая книгу то ли просто узнать путь ???
ЦитироватьГуглил, но кроме ThisWorkbook.Path  ничего не нарыл...
Если вас интересуют пути то собственно вы не то гуглили! Вы считали путь в переменную. Она должна быть типа String. Так кто вам потом мешает с ней работать и вычленять из нее нужные данные. Вот вам для примера макрос
Option Explicit
Sub PathFile()
    Dim FileDir As String
    FileDir = ThisWorkbook.Path
    Cells(1, 1).Value = FileDir
    Cells(2, 1).Value = Right(FileDir, InStrRev(FileDir, "\"))
    Cells(3, 1).Value = Left(FileDir, InStrRev(FileDir, "\"))
    Cells(4, 1).Value = Right(FileDir, InStr(FileDir, "\"))
    Cells(5, 1).Value = Left(FileDir, InStr(FileDir, "\"))
End Sub
А вообще судя по вопросу перед тем как писать что либо ознакомитесь хоть с парой статей. Мне эти очень помогли
Функции VBA для работы с текстом
Что такое модуль? Какие бывают модули?
Variable not defined или что такое Option Explicit и зачем оно нужно?
Ошибка — Cant find project or library
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

uatotal

 :)
Спасибо. То что нужно было нашел в Вашем ответе.
  Cells(5, 1).Value = Left(FileDir, InStr(FileDir, "\"))
Этого достаточно.