Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.01.2009, 15:21   #1
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию Как из пути файла вытянуть его последнюю папку

Есть, к примеру, путь D:\FirstFolder\SecondFolder\mytable .xls. Как из него вытянуть только SecondFolder?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума
Старый 17.01.2009, 15:35   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Сам спросил, сам ответил.
Код:
Function GetLastFolder(FullPath As String) As String
  If FullPath = "" Then Exit Function
  Dim i As Integer
  Dim result As String
  FullPath = StrReverse(FullPath)
  For i = InStr(FullPath, Application.PathSeparator) + 1 To Len(FullPath)
    If Mid(FullPath, i, 1) <> Application.PathSeparator Then
      result = result & Mid(FullPath, i, 1)
    Else: Exit For
    End If
  Next i
  GetLastFolder = StrReverse(result)
End Function
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума
Старый 17.01.2009, 15:41   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Sub test()
    TXT = ThisWorkbook.path
    MsgBox CreateObject("scripting.filesystemobject").GetFolder(TXT).Name
    
    'MsgBox CreateObject("scripting.filesystemobject").GetFolder(TXT).ParentFolder.Name
End Sub

Код:
Sub test2()
    TXT = ThisWorkbook.path
    MsgBox Mid$(TXT, InStrRev(TXT, "\") + 1)
End Sub

Последний раз редактировалось EducatedFool; 17.01.2009 в 15:44.
EducatedFool вне форума
Старый 17.01.2009, 15:53   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Нет слов. Одни выражения
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума
Старый 17.01.2009, 16:42   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Код:
Sub test2()
    TXT = ThisWorkbook.path
    MsgBox Mid$(TXT, InStrRev(TXT, "\") + 1)
End Sub
Почему-то все время возвращает «Мои документы» И первый код тоже.
ThisWorkbook.Path всегда возвращает «Мои документы», при этом ThisWorkbook.FullName возвращает то, что надо
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 17.01.2009 в 16:48.
viter.alex вне форума
Старый 17.01.2009, 16:49   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Почему-то все время возвращает «Мои документы»
Ну либо ты запускаешь макрос из файла, находящего в этой папке, либо Excel глючит...
Где-то на этом форуме я встречал тему, где обсуждался такой глюк - свойство path любого файла возвращало одно и то же значение.

Попробуй заменить ThisWorkbook.path на activeWorkbook.path


Цитата:
ThisWorkbook.Path всегда возвращает «Мои документы», при этом ThisWorkbook.FullName возвращает то, что надо
Попробуй так:
Код:
Sub test()
    txt = Replace(ThisWorkbook.FullName, "\" & ThisWorkbook.Name, "")
    If Len(txt) < 3 Or ThisWorkbook.Path = "" Then Exit Sub  ' файл не сохранён, или находится в корневом каталоге
    MsgBox Mid$(txt, InStrRev(txt, "\") + 1)
End Sub

Последний раз редактировалось EducatedFool; 17.01.2009 в 17:01.
EducatedFool вне форума
Старый 17.01.2009, 17:06   #7
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Ну либо ты запускаешь макрос из файла, находящего в этой папке, либо Excel глючит...
Где-то на этом форуме я встречал тему, где обсуждался такой глюк - свойство path любого файла возвращало одно и то же значение.

Попробуй заменить ThisWorkbook.path на activeWorkbook.path



Попробуй так:
Код:
Sub test()
    txt = Replace(ThisWorkbook.FullName, "\" & ThisWorkbook.Name, "")
    If Len(txt) < 3 Or ThisWorkbook.Path = "" Then Exit Sub  ' файл не сохранён, или находится в корневом каталоге
    MsgBox Mid$(txt, InStrRev(txt, "\") + 1)
End Sub
Внатуре глючит. Пойду дома пробовать. Глюк получается при сохранении под другим именем. Имя формируется из содержимого ячеек. Кстати, моя функция возвращает правильно, но сохраняет все равно в «Мои документы» и вылетает с ошибкой. Может это как-то связано с этим? Если не получится, буду искать обновления.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума
Старый 19.01.2009, 05:40   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Одно не понятно: при чем здесь ThisWorkbook.path?
Если есть строковая переменная, содержащая полный путь, то метод GetFolder объекта FileSystemObject, предложенный EducatedFool, обязан выдать требуемый результат.
Если же просто поработать с этой строкой, то могу предложить так:
Код:
Sub GetFolder()
    MyPath$ = "D:\FirstFolder\SecondFolder\mytable.xls"
    MsgBox Split(MyPath$, "\")(UBound(Split(MyPath, "\")) - 1)
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вытянуть скрин c *.swf или *.flv файла на php iankov PHP 1 09.01.2009 13:51
Как из юникодного текстового файла прочитать его построчно и неповторяющиеся слова ввести в ListBox? SkAndrew Общие вопросы Delphi 2 10.11.2008 22:14
Как вытянуть название файла из линка jungo Microsoft Office Excel 6 16.07.2008 14:08
Как обратиться к ячейке файла Excel не открывая его Alexandro Microsoft Office Excel 3 28.05.2008 12:02
Запуск файла по пути John_chek Общие вопросы Delphi 3 29.05.2007 12:38