• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Erlan
  • Дата начала
E

Erlan

Здравствуйте!
Написал на 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

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

savl

Lotus Team
28.10.2011
2 599
311
BIT
192
попробуйте использовать вот эти функции:
Там пример как раз для скрипта ну и еще полезностей, может будеть попроще.
Возможно дело в том, что объект objSelection при заполнении первой таблицы переписывается и его надо определять заново, но не факт просто предположение.
Так же все константы VBA лучше писать по значениям, ну и свериться с reference используемой версии word, может что поменялось.
 
E

Erlan

Спасибо большое за ответ 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 , и возможно можно сделать по другому , но оставлю так, потому как времени править нет. (Главное работает)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
ужоуж создать-то вордень - ну стыдно пользовать МСО ;)
вам в руки
сколько повторять - МСО VBA объекты очень запутаны...

Добавлено: для МСО современного розлива подойдет и
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
там же по созданию "сложного" дока
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
192
<Irony>
Если в лотусовой ветке есть вопрос по MS Office и OLE, то в его обсуждении есть ответ lmike про POI и Java
</Irony>
Без обид =)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
да какие обиды...
пытаюсь к разуму призвать..., я достаточно плотно работал с МСО макросами и прочей подобной херью. До сих пор плююсь, приходится, порой, ковырять "западные" формы, от их макроделов - ужос-ужос - индусы отдыхают
  • приходится коллегам писать макросы по всякую эксель-херь
  • есть вордовые шаблоны, кот. используются для генерации
столько затычек и всяких обходов угрёбищного МСО мне пришлось наделать (увы, в те времена, когда писал либу - POI был слаб, да др. либ не было), что вспоминаю с отвращением. Дык когда вижу - как молодёжь упорно лезет в эту каку, понятное желание - предотвратить
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!