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

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

23 Октябрь 2020, 02:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Как узнать, есть ли гиперссылка в тексте ячейки  (Прочитано 1711 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Стартовое сообщение: 18 Сентябрь 2020, 15:53 »

Всем доброго дня.
Подскажите, п-ста, как узнать, есть ли гиперссылка в тексте ячейки?
Спасибо.
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #1: 18 Сентябрь 2020, 15:59 »

В прошлой Вашей теме, здесь sokol92 давал ссылку на Питоньяка
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #2: 18 Сентябрь 2020, 16:31 »

У Питоньяка есть пример чтения всех ссылок в ячейке. Это не совсем то, что мне нужно.
Мне нужно понять, установлена ли гиперссылка для выделенного текста в ячейке.
Записан
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #3: 18 Сентябрь 2020, 16:42 »

Для Writer я проверял наличие гиперссылки в тексте с помощью свойства HyperLinkURL для отображаемого курсора.
Для Calc есть только текстовый курсор. Я попробовал применить это свойство для текстового курсора, но получил исключение
Свойство или метод не найдены.
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #4: 18 Сентябрь 2020, 16:59 »

Да там где читают все, не проблема найти одну
Вот проверяйте, ищет в ячейках диапазона а1:а10

Код:
Sub FindHyperLinkInCell
  Dim oCell, oText, oParEnum, oParElement
  Dim oEnum, oElement
  for i=0 to 10
  oCell = ThisComponent.Sheets(0).getCellByPosition(0, i)
  oParEnum = oCell.getText().createEnumeration()
  Do While oParEnum.hasMoreElements ()
    oParElement = oParEnum.nextElement()
    oEnum = oParElement.createEnumeration()
    Do While oEnum.hasMoreElements ()
      oElement = oEnum.nextElement()
      If oElement.TextPortionType = "TextField" Then
        If oElement.TextField.supportsService("com.sun.star.text.TextField.URL") Then
           Print "В ячейке A"& i+1 & "  гиперссылка " & oElement.TextField.URL
        End If
      End If
    Loop
  Loop
next
End Sub
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #5: 18 Сентябрь 2020, 18:28 »

Наверное, я плохо объяснил мою задачу. Мне нужно по выбранному фрагменту текста в одной конкретной ячейке определить,
установлена ли гиперссылка на этот фрагмент.
Записан
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #6: 21 Сентябрь 2020, 11:43 »

Есть ли в Calc видимый курсор, аналогично видимому курсору в Writer?
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #7: 21 Сентябрь 2020, 12:22 »

Аналог в Calc - активная ячейка (Active cell) на листе, которую еще не так-то просто определить макросом. Улыбка
Записан

Владимир.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #8: 21 Сентябрь 2020, 14:20 »

Активную ячейку не так сложно получить:

Dim oCell
oCell = ThisComponent.getCurrentSelection()

А вот как получить видимый курсор?
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 1 290


« Ответ #9: 21 Сентябрь 2020, 15:11 »

Опишите задачу целиком, м.б. есть решение проще.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #10: 21 Сентябрь 2020, 15:14 »

Активную ячейку не так сложно получить:
Это если выделение содержит одну ячейку. Выделите (с помощью CTRL) несколько диапазонов и установите активную ячейку в нижний правый угол одного из них.
Записан

Владимир.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #11: 21 Сентябрь 2020, 15:17 »

Активную ячейку не так сложно получить:
Это если выделение содержит одну ячейку. Выделите (с помощью CTRL) несколько диапазонов и установите активную ячейку в нижний правый угол одного из них.
Я программно выделяю ячейку, поэтому я точно знаю, что работаю с одной ячейкой.
Записан
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #12: 21 Сентябрь 2020, 15:23 »

Опишите задачу целиком, м.б. есть решение проще.
Я анализирую текст в ячейке и нахожу нужные фрагменты.
При этом мне нужно знать, поставлена ли на найденный фрагмент гиперссылка.
Если поставлена, я пропускаю этот фрагмент. Если нет, ставлю гиперссылку.
Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #13: 21 Сентябрь 2020, 15:32 »

В ответе #4 указан путь, как перебрать все фрагменты текста ячейки и для каждого фрагмента определить, является ли фрагмент гиперссылкой. Добавьте еще и проверку текста.
Записан

Владимир.
Борис_С
Форумчанин
***
Offline Offline

Сообщений: 107


« Ответ #14: 21 Сентябрь 2020, 16:05 »

Да, действительно, можно вытащить не только Url гиперссылки, но и текст гиперссылки,
но есть одно но. Как понять, где находится этот текст.
В частном случае это работает (если такой текст уникален), но если таких текстов несколько
я не смогу понять, на какой конкретно текст поставлена гиперссылка.
Записан
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

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