Экспорт Данных В Ms Word

Тема в разделе "Lotus - Программирование", создана пользователем Erlan, 11 мар 2014.

  1. Erlan

    Erlan Member

    Регистрация:
    9 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте!
    Написал на lotusScript код, который экспортирует данные из лотуса в ms word.
    НО никак не могу справиться с этими ситуациями:
    1) (Основная проблема) НЕ получается добавить вторую таблицу.
    'создаю ворд документ на лету
    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Add()
    objDoc.PageSetup.Orientation = wdOrientLandscape
    Set objSelection = objWord.Selection
    objSelection.Paragraphs(1).Format.Alignment = 1
    objSelection.TypeText "TEST TEXT"
    'добавил параграф
    objSelection.Paragraphs.Add
    Set objRange = objWord.ActiveDocument.Paragraphs(2).Range
    'добавил таблицу 1
    objDoc.Tables.Add objRange,1,9
    With objDoc.Tables(1)
    ...здесь заполняю табличку
    End With
    'далее мне нужно отступить одну строку и вставить еще одну таблицу
    'ВОТ ТУТ НАЧИНАЕТСЯ ПРОБЛЕМА
    objSelection.Paragraphs.Add
    Set objRange2 = objWord.ActiveDocument.Paragraphs.Last.Range
    objDoc.Tables.Add objRange2,1,2
    With objDoc.Tables(2)
    ...здесь заполняю табличку
    End With

    Код этот проверил, запихнув в макросы ворда. В ворде отработал как надо.
    А вот в лотусе выдает ошибку. Пишет что нет таблицы с индексом 2 objDoc.Tables(2).

    ПРОШУ помощи в составлении на лету документа ворд с двумя разными таблицами, одна под другой с отступом.



    2) НЕ могу сделать страницу Альбомную ориентация страницы
    objDoc.PageSetup.Orientation = wdOrientLandscape

    Так же в ворде отрабатывает верно а в лотусе ориентация остается книжной
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    попробуйте использовать вот эти функции: Word Table Function
    Там пример как раз для скрипта ну и еще полезностей, может будеть попроще.
    Возможно дело в том, что объект objSelection при заполнении первой таблицы переписывается и его надо определять заново, но не факт просто предположение.
    Так же все константы VBA лучше писать по значениям, ну и свериться с reference используемой версии word, может что поменялось.
     
  3. Erlan

    Erlan Member

    Регистрация:
    9 апр 2012
    Сообщения:
    11
    Симпатии:
    0
    Спасибо большое за ответ savl
    решил проблему с таблицей так, (проблема была в объекте select). Если понадобится кому код оставляю пример тут

    'получаю последний параграф и создаю объект Range для его выделения
    Dim lastParagraph As Variant
    Dim range As Variant
    Dim table As Variant
    Set lastParagraph = objDoc.Paragraphs(objDoc.Paragraphs.Count).Range
    Set range = objDoc.Range(lastParagraph.Start, lastParagraph.End)
    'выделяю последний абзац
    range.select
    'вставляю новый параграф
    objSelection.Paragraphs.Add
    'теперь уже создаю опять новый ранг и создаю там таблицу
    Set lastParagraph = objDoc.Paragraphs(objDoc.Paragraphs.Count).Range
    Set range = objDoc.Range(lastParagraph.Start, lastParagraph.End)
    Call objDoc.Tables.Add(range, 1, 2)

    Вот так заработало.
    запутался совсем с объектом Select , и возможно можно сделать по другому , но оставлю так, потому как времени править нет. (Главное работает)
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    ужоуж создать-то вордень - ну стыдно пользовать МСО ;)
    POI вам в руки
    сколько повторять - МСО VBA объекты очень запутаны...

    Добавлено: для МСО современного розлива подойдет и http://www.docx4java.org/trac/docx4j
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    ссылка там же по созданию "сложного" дока
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    <Irony>
    Если в лотусовой ветке есть вопрос по MS Office и OLE, то в его обсуждении есть ответ lmike про POI и Java
    </Irony>
    Без обид =)
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    да какие обиды...
    пытаюсь к разуму призвать..., я достаточно плотно работал с МСО макросами и прочей подобной херью. До сих пор плююсь, приходится, порой, ковырять "западные" формы, от их макроделов - ужос-ужос - индусы отдыхают
    • приходится коллегам писать макросы по всякую эксель-херь
    • есть вордовые шаблоны, кот. используются для генерации
    столько затычек и всяких обходов угрёбищного МСО мне пришлось наделать (увы, в те времена, когда писал либу - POI был слаб, да др. либ не было), что вспоминаю с отвращением. Дык когда вижу - как молодёжь упорно лезет в эту каку, понятное желание - предотвратить
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
Загрузка...

Поделиться этой страницей