EXCEL -как получить полное имя файла

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Имеется несколько файлов EXCEL с одинаковыми именами – «test.xls», но расположенных в разных каталогах. Как узнать полное имя загруженного в данный момент файла и имя родительского каталога этого файла?
Спасибо
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

можно вот так:

Код: Выделить всё

iFullName = ThisWorkbook.FullName
iFullName = ActiveWorkbook.FullName
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

VictorM, спасибо!
Предложенные Вами варианты проходят, если макрос- в этой же книге(подойдет 1-ый вариант) или книга - активная(подойдет 2-ой вариант), а как быть, если эти условия не выполняются?
Моя ситуация-открыты 3 эксцелевских файла - один из них содержит макросы("Macr.xls"), другой-вспомогательные данные("test.xls") и третий - обрабатываемые данные("work.xls")-активная книга. Я могу, конечно, временно активировать "test.xls" , "снять" его полное имя, а потом из него вычленить имя каталога, в котором "test.xls" находится, потом восстановить активность "work.xls" - но нету ли чего попроще?
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Для любой загруженной в этом сеансе работы книги

Код: Выделить всё

Dim i as integer
for i = 1 to Workbooks.Count
  Debug.Print Workbooks(i).FullName
next i
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

или, что по сути тоже самое - показать полный путь к открытой книге с именем test.xls
местонахождение данного макроса абсолютно любое...

Код: Выделить всё

Sub ShowFullName4Test()
  Dim w As Workbook
  For Each w In Workbooks
    If UCase(w.Name) = UCase("test.xls") Then
      MsgBox "Full Name " & w.FullName
    End If
  Next w
End Sub
Dim_ok
Сообщения: 51
Зарегистрирован: 03 июл 2007, 09:17

если не ошибаюсь можно в любой ячейке открытого файла прописать формулу
=ЯЧЕЙКА("имяфайла") - выдаст полный путь
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

Dim_ok, не.. мне кажется, что так не пойдёт - ибо 1) не соответствует постановке задачи - получить имя книги из макроса, причём эта книга неактивна (смотри пост #3)...
2) плюс, хотя в данном случае это неважно, но надо учитывать,
что ЯЧЕЙКА("имяфайла") - работает только для сохранённых книг!

впрочем, вариантов уже достаточно - anval есть из чего выбрать...
Dim_ok
Сообщения: 51
Зарегистрирован: 03 июл 2007, 09:17

Странно, а мне показалось "Как узнать полное имя загруженного в данный момент файла и имя родительского каталога этого файла?" предполагает его (файла) активность и не имеет никакого упоминания о макросах (смотри пост #1)...
впрочем да, выбирать есть из чего
anval
Сообщения: 98
Зарегистрирован: 09 ноя 2004, 10:06

Всем - спасибо за участие, Aent и Serge_Bliznykov - за ответы, которые мне подходят.
Ответить