Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

20 Ноябрь 2019, 08:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Имя активного файла в ячейку макросом Решено  (Прочитано 349 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Konstanta
Участник
**
Offline Offline

Сообщений: 40


« Стартовое сообщение: 18 Октябрь 2019, 08:27 »

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

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

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

Благодарен всем, кто уже оставил свои следы на данной Планете!
Спасибо всем, кто откликнется.
« Последнее редактирование: 20 Октябрь 2019, 17:21 от Konstanta » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 816


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 18 Октябрь 2019, 09:13 »

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

mikekaganski
Мастер
*****
Online Online

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 545


« Ответ #2: 18 Октябрь 2019, 09:15 »

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

Код:
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
    Dim aURL
    aURL = ThisComponent.getURL()
    If (Len(aURL) > 0) Then _
        MsgBox GetFileNameWithoutExtension(FileNameoutofPath(aURL))
Записан

С уважением,
Михаил Каганский
Konstanta
Участник
**
Offline Offline

Сообщений: 40


« Ответ #3: 18 Октябрь 2019, 09:52 »

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

Сообщений: 40


« Ответ #4: 18 Октябрь 2019, 09:54 »

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

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 545


« Ответ #5: 18 Октябрь 2019, 09:56 »

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

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

С уважением,
Михаил Каганский
Konstanta
Участник
**
Offline Offline

Сообщений: 40


« Ответ #6: 18 Октябрь 2019, 10:20 »

Нет, значит, у Вашего документа ещё нет имени файла (а Untitled1 или Безимени1- это всего лишь заголовок, а не имя файла), и выводить нечего.
Да нет. У меня для тестирования всех пробников создан файл "Пустышка" и собственно в нём я пробовал макрос.
Записан
Konstanta
Участник
**
Offline Offline

Сообщений: 40


« Ответ #7: 18 Октябрь 2019, 11:18 »

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

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 545


« Ответ #8: 18 Октябрь 2019, 11:32 »

Код:
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
    Dim aURL$
    aURL = ThisComponent.getURL()
    If (Len(aURL) > 0) Then _
        ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("G1").String = GetFileNameWithoutExtension(FileNameoutofPath(aURL))
Записан

С уважением,
Михаил Каганский
Konstanta
Участник
**
Offline Offline

Сообщений: 40


« Ответ #9: 18 Октябрь 2019, 12:08 »

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

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!