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

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

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

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Добрый день. При сохранении файла из xlsx в ods, все внешни?...  (Прочитано 678 раз)
0 Пользователей и 1 Гость смотрят эту тему.
economist
Форумчанин
***
Offline Offline

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


« Ответ #15: 12 Ноябрь 2020, 16:25 »

В пустом столбце написать =ГИПЕРССЫЛКА([адресдохлойсслыки];[адресдохлойсслыки]) и протянуть вниз.

Выходит Ошибка 507 и 520. Если у меня таких 3000 разных адресов, мне всех их прописывать в формуле? Может есть макрос, который может выполнит действие что я описал изначально?

Файл Пример1 (формулой ГИПЕРССЫЛКА).ods вложил

* Пример1 (формулой ГИПЕРССЫЛКА).ods (9.59 Кб - загружено 2 раз.)
Записан

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

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


« Ответ #16: 12 Ноябрь 2020, 16:40 »

И еще костыль, если есть текст перед ссылками как в первом примере
Код:
=HYPERLINK("htt"&TRIM(RIGHT(SUBSTITUTE(B2;"htt";REPT(" ";500));300));TRIM(LEFT(SUBSTITUTE(B2;"htt";REPT(" ";500));300)))
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
eeigor
Ubuntu 18.04 LTS • LO 7.0.2.2
Форумчанин
***
Offline Offline

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



« Ответ #17: 13 Ноябрь 2020, 08:02 »

это может быть уже исправлено в последних версиях ЛО
В новой версии такое поведение сохраняется
Записан
CatPaws
Участник
**
Offline Offline

Сообщений: 6


« Ответ #18: 13 Ноябрь 2020, 08:05 »

Можно выделить ячейки, в которые нужно занести гиперссылки, и выполнить макрос SelectionInsertHyperlink

Код:
Option Explicit
Sub SelectionInsertHyperlink
  Dim oCell
  For Each oCell In ThisComponent.CurrentSelection.queryVisibleCells.getCells
    CellInsertHyperLink oCell, ThisComponent
  Next oCell  
End Sub

Sub CellInsertHyperLink(oCell, oDoc)
  Dim oField, s As String, i As Long
  oField = oDoc.createInstance("com.sun.star.text.TextField.URL")
  s=oCell.getString
  i=Instr(1, s, "http")
  If i>0 Then
    oCell.setString Left(s, i-1)
    oField.Url=mid(s, i)
    oField.Representation=oField.Url
    oCell.Text.insertTextContent(oCell.Text.createTextCursor, oField, false)
  End If  
End Sub

Спасибо вам огромное, все получилось. Во всех выделенных строках при запуске данного макроса теперь активные ссылки.
Записан
eeigor
Ubuntu 18.04 LTS • LO 7.0.2.2
Форумчанин
***
Offline Offline

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



« Ответ #19: 13 Ноябрь 2020, 09:06 »

Можно выделить ячейки, в которые нужно занести гиперссылки...
Владимир, хороший пример. Вариант с "не выделять" и возможным наличием скрытых строк для активного листа:
Код:
  oRanges = ThisComponent.CurrentController.ActiveSheet _
   .queryContentCells(com.sun.star.sheet.CellFlags.STRING)
  For Each oCell In oRanges.Cells
      CellInsertHyperLink ...
  ...
« Последнее редактирование: 13 Ноябрь 2020, 09:16 от eeigor » Записан
eeigor
Ubuntu 18.04 LTS • LO 7.0.2.2
Форумчанин
***
Offline Offline

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



« Ответ #20: 13 Ноябрь 2020, 10:21 »

Вопрос к sokol92.
Владимир, подскажите, почему мы создаём экземпляр URL (интуитивно непонятно)?
oField = ThisComponent.createInstance("com.sun.star.text.TextField.URL")

Получается:
oField.Representation = oField.URL
Попробовал создать так:
oField = ThisComponent.createInstance("com.sun.star.text.TextField")
...данных нет (см. скриншот 1), и возникает ошибка времени выполнения.

Получается у объекта TextField.URL есть свойства: URL, Representation и т. д. (см. скриншот 2).
Странная модель... Или я чего-то не понял?


UPD: На скриншоте 2 видим, что <TextField.URL> возвращает объект типа ScEditFieldObj
Или URL - это объект типа ScEditFieldObj с одноимённым свойством URL типа String?

 _____ List of supported services _____
com.sun.star.text.TextContent
com.sun.star.text.TextField

Я не программист, поясните, please.

P.S. В Excel как-то всё проще: collections (classes) со своими members (properties, methods, events) + enums (constants). И Object Browser в придачу.


* Снимок экрана от 2020-11-13 10-13-29.png (9.99 Кб, 286x160 - просмотрено 1 раз.)

* Снимок экрана от 2020-11-13 10-11-07.png (110.23 Кб, 888x688 - просмотрено 6 раз.)
« Последнее редактирование: 13 Ноябрь 2020, 11:02 от eeigor » Записан
sokol92
Форумчанин
***
Offline Offline

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


WWW
« Ответ #21: 13 Ноябрь 2020, 15:14 »

Добрый день!
Попробую ответить.
1. Мы создаем экземпляр объекта с именем "com.sun.star.text.TextField.URL", поскольку нам нужна именно гиперссылка. Список имен для тектовых полей, которые можно задавать при обращении к методу CreateInstance, можно получить следующим макросом (и далее изучать):

Код:
Option Compatible
Option Explicit
Sub TestCreateInstanceText
  Dim v, vList, s As String
  vList=ThisComponent.getAvailableServiceNames
  For Each v In vList
    If v Like "com.sun.star.text*" Then
      s=s & v & chr(10)
    End If 
  Next v 
  Msgbox s
End Sub


2. Указанный выше объект com.sun.star.text.textField.URL имеет, в частности, свойства URL (гиперссылка) и Representation (текст для отображения гиперссылки). У меня в примере они одинаковы, поскольку так нужно автору темы.

3. В языке VBA нет средств для инспекции методов и свойств объектов (только, как Вы справедливо заметили, отладчик и "внешний" инструмент Object Browser), в LO Basic эту вопросу уделено большое внимание. Например, А.Питоньяк исключительно средствами Basic создал замечательный макрос Inspect.
Записан

Владимир.
Страниц: « 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!