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

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

6 Март 2021, 02:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 12


« Стартовое сообщение: 25 Декабрь 2020, 07:41 »

Здраствуйте, друзья!

Есть задачка перевести файл с макросами ms excell в lo.
Макрос изменяет внешние связи. Никак не получается реализовать. Нашла ,что связи есть в service ExternalDocLinks, но как их изменить?

Вот часть макроса в ms excel, который меняет все связи, содержащие слово test на  pBook:
For Each x In ThisWorkbook.LinkSources(xlExcelLinks)
    If InStr(x, "temp") > 0 Then
        ThisWorkbook.ChangeLink x, pBook
        Exit For
    End If
Next
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #1: 25 Декабрь 2020, 08:19 »

Запишите макрос с Ctrl+H и он сделает то же самое. pBook можно скопировать из ячейки или задать явно.
Записан

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

Сообщений: 12


« Ответ #2: 25 Декабрь 2020, 08:51 »

Что значит записать макрос с Ctrl+H?

pbook задана явно,  это не важно
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #3: 25 Декабрь 2020, 12:26 »

1) Сервис - Макросы - Записать...
2) Ctrl+H - Найти - x -  Заменить - pBook - Заменить все. Тут x и pBook - например, Книга1  и Книга2
3) Остановить запись, Сохранить макрос.

Запуск макроса изменит внешнюю связь путем замены подстроки в формулах листа/книги. Может всплыть окно замены ссылок, это нормально.

Чтобы макрос не испарился из формата XLS - файл придется сохраниить в ODS. Хотя возможны варианты с опциями совместимости Option VBASupport 1 и настройками Calc - Загрузка/Сохранение.
Записан

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

Сообщений: 12


« Ответ #4: 25 Декабрь 2020, 12:47 »

Понятно, спасибо, но это не совсем то.
Мне нужно изменить все ссылки, которые находятся в правки, внешние ссылки/
Если делать через замену в ячейках, то внешняя ссылка там  не изменяется.
И я не знаю Х, мне нужно изменить все внешние ссылки, которые содержат определенное слово( в примере это temp)
Записан
Ammaretto
Участник
**
Offline Offline

Сообщений: 12


« Ответ #5: 25 Декабрь 2020, 12:54 »

Хотя на самый крайней случай попробую Через замену, как получить имя ссылок то я знаю...А вот как изменить...
oLink=wb.ExternalDoclinks.getElementNames()
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #6: 25 Декабрь 2020, 14:50 »

Ссылок в LO Calc много:

Ссылки на ячейки/диапазоны (без форматирования)
Ссылки на Диапазоны (с форматированием)
Ссылки в DataBaseRange - диапазонах
DDE-ссылки
OLE-ссылки

Для каждой из них - разные инструменты и команды сложного API, вот почему я показал самый простой путь.

Окно Правка - Ссылка на внешние данные - чисто "созерцательное", чаще всего ни одной кнопке или тексту в нём - верить нельзя. И да, оно обновляется (даже после макроса из #3), но лишь после переоткрытия файла.  
Записан

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

Сообщений: 12


« Ответ #7: 27 Декабрь 2020, 19:13 »

Очень интересно. После переоткрытия файла и правда ок.
Хотелось бы конечно пойти по сложному пути, но так пока ничего не нашла, то воспользуюсь простым.
Большое спасибо за подробные ответы!
Записан
economist
Форумчанин
***
Offline Offline

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


« Ответ #8: 29 Декабрь 2020, 15:56 »

Сохранение файла и его перезагрузку можно тоже тоже записать как макрос. Для пользователя файл просто "мигнет" на секунду.

Сложный путь требует реально много времени. Моя метрика трудозатрат на написания условной "строки кода" на MSO VBA и на LOBasic дает соотношение 1:4, это непозволительно большой отрыв. Одно радует и прощает "отстающего" - всё-таки на LO Basic можно написать всё, то что и на VBA. И что это бесплатно и навсегда.    
« Последнее редактирование: 29 Декабрь 2020, 15:59 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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