Страницы: 1
RSS
Удалить часть текста справа до первого символа \
 
Добрый день, коллеги!

Нужно удалить текст справа до первого символа "\"
Я пытаюсь определить адрес нахождения текущей книги.
Код
        Dim a 
        Let a = ActiveWorkbook.FullName

На выходе имею а=D:User\DropBox\VBA\test.xlsm
Необходимо удалить название файла из значения а. Оставить только путь к файлу.
 
Allleksey, почему сразу не брать путь?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Не знаю, по какой причине, но на одном компьютере ActiveWorkbook.Path путь к файлу, а на другом возвращает пустую строку.
Решил попробовать зайти с другой стороны.
 
Цитата
Allleksey написал:
на другом возвращает пустую строку.
такое может быть когда файл еще не сохранен
 
Цитата
ivanok_v2 написал: такое может быть когда файл еще не сохранен
100%

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Принял. Разобрался, спасибо!!! Действительно в этом проблема.
 
Все таки попытался для тренировки решить задачу.

Код
Let FolderPath = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) - 11)
Изменено: Allleksey - 06.11.2018 16:50:29
 
Allleksey, Вы написали по факту, что
Код
FolderPath = ActiveWorkbook.FullName
только очень длинным способом - так что попытка не засчитана.
 
Код
With ActiveWorkbook:FolderPath = Left$(.FullName, Len(.FullName) - Len(.Name)):End With

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Откорректировал код. Почему то не все скопировалось :(
 
Allleksey, длина имени файла всегда 11 символов???

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, да. Я предполагаю, что файл будет называться всегда одинаково, что бы по его названию пользователь определял, что это именно файл аналитики.
 
Код
Sub q()
    sFullName = "D:User\DropBox\VBA\test.xlsm"
    sPath = Left$(sFullName, InStrRev(sFullName, "\") - 1)
    sName = Mid$(sFullName, InStrRev(sFullName, "\") + 1)
End Sub
 
RAN, простите, а для чего нужен знак "$" после Left и Mid?
 
Указание программе, что тип переменной - String
 
Можно и без него. Будет дольше работать. На 1/10^?  сек. :D
Изменено: RAN - 06.11.2018 21:29:06
 
вариант UDF в D1
Код
 Function sPath$(t$)
  With CreateObject("VBScript.RegExp"): .Pattern = "[^\\]+": .Global = True
       sPath = .Execute(t)(.Execute(t).Count - 1): sPath = Replace(t, "\" & sPath, "")
  End With
End Function
Изменено: кузя1972 - 06.11.2018 22:14:21
Страницы: 1
Наверх