Имя активного файла в ячейку макросом Решено

Автор Konstanta, 18 октября 2019, 08:27

0 Пользователи и 1 гость просматривают эту тему.

Konstanta

Приветствую Вас, о добрые и открытые жители галактики "Open"!
Я как и многие пришёл с дружеским визитом с Планеты Excel.
Но там чуть другая атмосфера (язык).

Поэтому самые простые вещи, на которые в Excel тратится минута, приходится постигать заново и задавать глупые вопросы.
Сам уже посмеялся (над собой) ... И теперь прошу помощи.
Форум шерстил неделю. Смотрел похожие темы (имя листа) где-то даже видел макросы с именем файла но там извлекался полный путь и тоже "Ячейкой".

Есть необходимость получить в заданную ячейку имя активного файла. Причём не формулу (типа "ячейка"), а её результат.
И не путь, и не "путь/// + имя файла+расширение+Лист1" а именно "Имя файла".
Например формула "ЯЧЕЙКА("filename";A1) возвращает следующий результат:
'file:///E:/Пустышка.ods'#$Лист1
.. надо же! В LO он вот так выглядит :)
В данном случае нужен Результат "Пустышка"
Чтобы было понятно, я данный лист заберу в другую книгу, там обработаю, а потом выгружу в новый файл, присвоив ему старое имя (откуда забирал) и родной его формат.

Благодарен всем, кто уже оставил свои следы на данной Планете!
Спасибо всем, кто откликнется.

rami

Так, наверно:
Sub Main
Dim sTitle$, fileName$
sTitle = ThisComponent.Title
fileName = split(sTitle, ".")(0)
Print fileName
End Sub

mikekaganski

Здравствуйте, и добро пожаловать!

   GlobalScope.BasicLibraries.LoadLibrary("Tools")
   Dim aURL
   aURL = ThisComponent.getURL()
   If (Len(aURL) > 0) Then _
       MsgBox GetFileNameWithoutExtension(FileNameoutofPath(aURL))
С уважением,
Михаил Каганский

Konstanta

Спасибо rami !
С "посильным вкладом" возился долго... я не очень дружу с этими "прибамбасами" :)
Код работает.
Но он выводит результат в бокс.
Как добавить в код адрес ячейки?

Konstanta

Спасибо mikekaganski!
Вставил Ваш код в sub
Видимых результатов не получил.
Значит я сделал что-то не так.

mikekaganski

Цитата: Konstanta от 18 октября 2019, 09:54
Вставил Ваш код в sub
Видимых результатов не получил.
Значит я сделал что-то не так.

Нет, значит, у Вашего документа ещё нет имени файла (а Untitled1 или Безимени1- это всего лишь заголовок, а не имя файла), и выводить нечего.
С уважением,
Михаил Каганский

Konstanta

Цитата: mikekaganski от 18 октября 2019, 09:56Нет, значит, у Вашего документа ещё нет имени файла (а Untitled1 или Безимени1- это всего лишь заголовок, а не имя файла), и выводить нечего.
Да нет. У меня для тестирования всех пробников создан файл "Пустышка" и собственно в нём я пробовал макрос.

Konstanta

Да, mikekaganski!
Ваш код работает, но тоже выдаёт имя файла в MsgBox а не в заданную ячейку.
Я пытался вместо MsgBox вставить [G1]= но ничего не вышло

mikekaganski

   GlobalScope.BasicLibraries.LoadLibrary("Tools")
   Dim aURL$
   aURL = ThisComponent.getURL()
   If (Len(aURL) > 0) Then _
       ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("G1").String = GetFileNameWithoutExtension(FileNameoutofPath(aURL))
С уважением,
Михаил Каганский

Konstanta

mikekaganski Спасибо огромное!
Код работает как нужно.
Премного благодарен!
Готов оказать посильную поддержку.
В старом фильме один анархист сказал "Труд должен вознаграждаться!
Буду признателен, если Вы предложите мне варианты такой поддержки и способов её выражения (номер телефона или пр..)