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

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

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

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

Сообщений: 6


« Стартовое сообщение: 17 Август 2017, 20:29 »

Добрый день! Есть макрос для ворда/экселя, который необходимо заставить работать в либре офисе. Подскажите, это реально? Может быть кто-то из форумчан научит или возьмется помочь?

Или надо написать новый, или как-то иначе решить задачу - может будут идеи?..

Задача - вставка текстов из ворд в эксель, одна ячейка = страница (разделение разрывом страниц) с сохранением форматирования внутри абзацев.

Заранее спасибо за помощь!
Записан
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 091



« Ответ #1: 17 Август 2017, 20:59 »

Задача - вставка текстов из ворд в эксель
цель сего действия?
Есть макрос для ворда/экселя, который необходимо заставить работать в либре офисе
где файл с макросом?
Записан

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

Сообщений: 2 241


WWW
« Ответ #2: 17 Август 2017, 21:21 »

Задача - вставка текстов из ворд в эксель
В данном случае - из Writer в  Calc
Записан

mikekaganski
Ветеран
*****
Offline Offline

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


« Ответ #3: 17 Август 2017, 21:24 »

с сохранением форматирования внутри абзацев.

Невозможно.
Записан

С уважением,
Михаил Каганский
kompilainenn
Ветеран
*****
Offline Offline

Сообщений: 2 091



« Ответ #4: 17 Август 2017, 23:25 »

Невозможно.
https://i.imgur.com/BX0FZNd.png
почему?
Записан

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

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


« Ответ #5: 17 Август 2017, 23:59 »

Ну, если речь только о форматировании символов, тогда возможно. А форматирование параграфов (например, выравнивание влево/вправо) не установишь разное для разных параграфов в одной ячейке. См., например, здесь.
Записан

С уважением,
Михаил Каганский
economist
Ветеран
*****
Offline Offline

Сообщений: 715


« Ответ #6: 18 Август 2017, 12:38 »

Мой мозг отказывается помогать :-) пока не будет раскрыт смысл данной задачи.
Чтобы "то же самое" было на экране, но с другим расширением (не ODT, а ODS???).

Вот обратная задача - имеет и смысл, и решение. Договоры часто должны выглядеть красиво, как книги или Библия.
Обычно считают что-то в таблицах, а текст верстают - в редакторах текста. Есть куча инструментов для вставки фрагментоа одного - в другое. Но целиком вставлять страницу, скажем, чтобы что-то пересчитать - неправильно ни разу.       
Записан

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

Сообщений: 715


« Ответ #7: 18 Август 2017, 12:40 »

И да, покажите макрос! Две волшебные строчки вверху модуля с макросами:
Код:
Option VBASupport 1
Option Compatible
делают 70% кода из MSO - работоспособным в LibreOffice.
Записан

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

Сообщений: 6


« Ответ #8: 18 Август 2017, 13:24 »

цель сего действия?
Работа такая. Авторы сдают тексты в .doc(х), клиент хочет их в виде таблицы .xls(x). Их достаточно много, чтобы в ручную это делать было затруднительно.


где файл с макросом?
Прошу прощения, не нашла как убрать под кат.

Код:
Sub Auto_Import_Excel_2()
'ТРЕБУЕТСЯ ПОДКЛЮЧИТЬ БИБЛИОТЕКУ Microsoft Excel 12.0 (или 14.0) Object Library в Tools=>References
   
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .StatusBar = False
    End With
   
    Dim obj_Excel As Excel.Application 'Объектные переменные для MS Excel
    Dim obj_Workbook As Excel.Workbook 'Для книги
    Dim obj_Worksheet As Excel.Worksheet 'Для листа
    Dim obj_Range As Word.Range 'Для текста в MS Word
    Dim odj_Doc As Word.Document 'Для документа в MS Word основного
    Dim odj_Doc_time As Word.Document 'Для документа в MS Word временного
    Dim NumPages As Long
   
    Set odj_Doc = ActiveDocument
    'Запустим MS Excel
    Set obj_Excel = New Excel.Application
    Set obj_Workbook = obj_Excel.Workbooks.Add 'Добавим в Excel новую книгу
    Set obj_Worksheet = obj_Workbook.Worksheets(1) 'Присвоим переменной ссылку на первый лист книги
   
    NumPages = ActiveDocument.ComputeStatistics(wdStatisticPages) 'Количество страниц в Word

    For i = 1 To NumPages

        Documents.Add DocumentType:=wdNewBlankDocument 'Добавить временный документ
        Set odj_Doc_time = ActiveDocument

        odj_Doc.Activate
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i
        Set rgePages = Selection.Range
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i
        rgePages.End = Selection.Bookmarks("\Page").Range.End
        rgePages.Select: Selection.Copy
               
        odj_Doc_time.Activate: Selection.PasteAndFormat (wdFormatOriginalFormatting)
            Selection.WholeStory
            With Selection.Find
                .Text = "^p"
                .Replacement.Text = "+++"
                .Execute Replace:=wdReplaceAll
            End With
            With Selection.Find
                .Text = "^m"
                .Replacement.Text = ""
                .Execute Replace:=wdReplaceAll
            End With
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i
        Set rgePages = Selection.Range
        Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=i
        rgePages.End = Selection.Bookmarks("\Page").Range.End
        rgePages.Select
       
        rgePages.Copy
        obj_Worksheet.Cells(i, 1).Select: ActiveSheet.Paste
        obj_Worksheet.Cells.Replace What:="+++", Replacement:="" & Chr(10) & "", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
       
        odj_Doc_time.Close (False) 'Закрыть документ
    Next i
       
    obj_Excel.Visible = True
   
    With Application
        .ScreenUpdating = True
        .DisplayAlerts = True
        .StatusBar = True
    End With
   
End Sub

Ну, если речь только о форматировании символов, тогда возможно
Важно чтобы сохранялись абзацные отступы и списки, если есть. Все остальное не проблема поправить массово уже в таблице.

Записан
li11amy
Новичок
*
Offline Offline

Сообщений: 6


« Ответ #9: 18 Август 2017, 13:25 »

Две волшебные строчки вверху модуля с макросами:
Пробовала, не помогает (вставляла в самое начало макроса)
Записан
li11amy
Новичок
*
Offline Offline

Сообщений: 6


« Ответ #10: 18 Август 2017, 13:31 »

Чтобы "то же самое" было на экране, но с другим расширением (не ODT, а ODS???)

Чтобы текст - обычный текст с заголовками и подзаголовками - оказался в ячейке таблицы. Зачем - вопрос отчасти философский, но вообще затем, чтобы потом эту таблицу подгрузить и получить тексты на сайте без закидывания через админку поштучно, например. Но это уже за пределами моих полномочий  и задач.

Моя проблема - хочу вернуться на ubuntu, которой много лет пользовалась, а тут "познакомилась" в 10-й, и маломощный нетбук постоянно тупит.  Этот макрос - последняя преграда на пути. Впрочем, это тоже лирика за рамками стоящей задачи))))
Записан
mikekaganski
Ветеран
*****
Offline Offline

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


« Ответ #11: 18 Август 2017, 13:33 »

Ну, если речь только о форматировании символов, тогда возможно
Важно чтобы сохранялись абзацные отступы и списки, если есть. Все остальное не проблема поправить массово уже в таблице.

Оба параметра - свойства абзаца (нумерация и отступы).

Я могу себе представить, как кто-то пробует создать макрос, который бы анализировал соответствующие параметры в исходном тексте, и вставлял "скорректированный" текст, где "нумерация" и "отступы" были бы выполнены в тексте, к примеру отступы - пробелами.

Но я даже не буду начинать про "правильность" такого подхода, просто вздохну насчёт того, сколько времени займёт вычистка багов такого кода.

Лучше повторю своё заявление из ответа #3: невозможно.
Записан

С уважением,
Михаил Каганский
li11amy
Новичок
*
Offline Offline

Сообщений: 6


« Ответ #12: 18 Август 2017, 14:10 »

Я могу себе представить, как кто-то пробует создать макрос, который бы анализировал соответствующие параметры в исходном тексте, и вставлял "скорректированный" текст, где "нумерация" и "отступы" были бы выполнены в тексте, к примеру отступы - пробелами.

Не надо никаких сложностей, просто текст их файла в формате docx или аналогичном вставить "как есть" в calc так, чтобы 1 страница текстового документа (тексты разделены разрывом страницы) = 1 ячейке таблицы, а форматирование абзаца оставалось на месте.

В связке ворд + эксель все работает, то есть это возможно. Вопрос в том, что нужно скорректировать в макросе, чтобы работало в связке writer + calc...
Записан
li11amy
Новичок
*
Offline Offline

Сообщений: 6


« Ответ #13: 18 Август 2017, 14:16 »

Вот еще информация: при попытке запуска макроса в райтере выдает такую ошибку
http://clip2net.com/s/3N2BfxR

или вот такую:
http://clip2net.com/s/3N2DfW0
« Последнее редактирование: 18 Август 2017, 14:30 от li11amy » Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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