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

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

19 Сентябрь 2021, 07:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #15: 24 Апрель 2021, 19:14 »

Попробуйте так:
Код:
Sub Main
Dim oDrawPage, sString$
oDrawPage = ThisComponent.DrawPage
For i = 0 To oDrawPage.count -1
sString = oDrawPage(i).String       'получить текст из врезки
Next
End Sub
Записан

economist
Форумчанин
***
Offline Offline

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


« Ответ #16: 24 Апрель 2021, 19:34 »

Разу уже тема содержит понятие Врезка, то вот и для них аналогичный макрос:
Код:
Sub GetTextFromFrames
'  Frames - они же Вставка - Врезка (все варианты)
oFrames = ThisComponent.TextFrames
For i = 0 To oFrames.count -1
sString = oFrames(i).String       'получить текст из врезки
Next
End sub 

Имена Врезок - oFrames(i).Name - можно учитывать при считывании, сортировать для изменения порядка формирования текста итд. 
Записан

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

Сообщений: 17


« Ответ #17: 24 Апрель 2021, 20:34 »

Попробуйте так:
Я вставил код, но при выполнении выскакивает ошибка (скриншот во вложении).

Имена Врезок - oFrames(i).Name - можно учитывать при считывании, сортировать для изменения порядка формирования текста итд.
Ваш макрос запускается, но ничего не происходит. Возможно, я не разобрался как сортировать порядок формирования текста.

Во вложении прикладываю образец текста


* Образец врезок.odt (12.2 Кб - загружено 3 раз.)

* Ошибка макроса.png (54.72 Кб, 1426x721 - просмотрено 12 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #18: 24 Апрель 2021, 21:41 »

Я вставил код, но при выполнении выскакивает ошибка (скриншот во вложении).
Наверно в вашем оригинальном документе есть что-то ещё кроме врезок, но вариант от economist, должен работать.

... макрос запускается, но ничего не происходит
Происходит то, что не видно — полученные данные записываются в переменную sString, вставьте msgbox в код (если врезок будет много, утомитесь закрывать сообщения Смеющийся):
Код:
Sub GetTextFromFrames
'  Frames - они же Вставка - Врезка (все варианты)
oFrames = ThisComponent.TextFrames
For i = 0 To oFrames.count -1
sString = oFrames(i).String       'получить текст из врезки
msgbox(sString)                      'вывести в сообщение
Next
End sub
Записан

Sparkster
Участник
**
Offline Offline

Сообщений: 17


« Ответ #19: 24 Апрель 2021, 23:53 »

Наверно в вашем оригинальном документе есть что-то ещё кроме врезок, но вариант от economist, должен работать.
К сожалению, ничего не поменялось. Пример куска документа в сообщении https://forumooo.ru/index.php/topic,5901.15/msg,58213.html
Возможно это не врезки, но похожи на нее.
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #20: 25 Апрель 2021, 09:35 »

Возможно это не врезки
-врезки это. И последний макрос нормально их отображает. Смотрите приложенный файл

* Образец врезок_1.odt (12.9 Кб - загружено 2 раз.)
Записан

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

Сообщений: 17


« Ответ #21: 25 Апрель 2021, 11:12 »

-врезки это. И последний макрос нормально их отображает. Смотрите приложенный файл
Запустил макрос из файла, который вы приложили к сообщению. После нажатия кнопки пуск я последовательно получил сообщения о врезках, которые нашел скрипт. А дальше что делать? Мне же нужно получить обычный текст.
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #22: 25 Апрель 2021, 11:34 »

А дальше что делать?
ну это Вам виднее, можно сцепить все выводы msgbox в одну строку.
Записан

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

Сообщений: 17


« Ответ #23: 25 Апрель 2021, 11:56 »

Получается, что макрос просто показывает где находятся врезки? Я и без него знал это.
ну это Вам виднее, можно сцепить все выводы msgbox в одну строку.
Как это сделать?
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #24: 25 Апрель 2021, 12:06 »

Как вариант:
Код:
Sub GetTextFromFrames
'  Frames - они же Вставка - Врезка (все варианты)
oFrames = ThisComponent.TextFrames
sAll=""
For i = 0 To oFrames.count -1
sString = oFrames(i).String       'получить текст из врезки
sAll = sAll+" "+sString
Next
msgbox(sAll)                      'вывести в сообщение
End Sub
Записан

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

Сообщений: 17


« Ответ #25: 25 Апрель 2021, 12:16 »

Как вариант:
Выскакивает пустой месседж бокс и ничего не происходит


* Ошибка макроса1.png (22.28 Кб, 1409x648 - просмотрено 3 раз.)
Записан
Bigor
Мастер
*****
Offline Offline

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


« Ответ #26: 25 Апрель 2021, 12:21 »

Смотрите в файле

* Образец врезок_2.odt (13 Кб - загружено 2 раз.)
Записан

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

Сообщений: 17


« Ответ #27: 25 Апрель 2021, 12:57 »

Смотрите в файле
Скрипт выдает все врезки в месседж боксе. А как скопировать весь текст и перенести в новый документ?
Записан
eeigor
Форумчанин
***
Offline Offline

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



« Ответ #28: 25 Апрель 2021, 13:26 »

Вы можете весь полученный (собранный) текст скопировать в буфер обмена (через объект XTransferable) и потом вручную вставить, куда нужно. В сети есть готовый код для копирования.
Код вам будет непонятен, но есть пример вызова (пройдите по ссылке и прокрутите вниз), и вникать в него особого смысла нет. Такой код, ИМХО, пишут не пользователи, а разработчики, которые сами и создали такую ситуацию непонимания Улыбка LubreOffice API сложен для восприятия. Но мы им всё равно признательны…
« Последнее редактирование: 25 Апрель 2021, 13:43 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.2.0.2 Community
Bigor
Мастер
*****
Offline Offline

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


« Ответ #29: 25 Апрель 2021, 13:46 »

А как скопировать весь текст и перенести в новый документ?
Вы бы все хотелки сразу описали бы Улыбка Смотрите файл. Возможно придется путь сохранения файла с текстом исправить


* Образец врезок_3.odt (13.14 Кб - загружено 3 раз.)
Записан

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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