Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / про OLE / 16 сообщений из 16, страница 1 из 1
06.04.2005, 17:27
    #33001158
benzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Слышал, что работа через OLE c Word'ом некоторая урезанная. Это на самом деле так?
И не сочтите за труд, посоветуйте , где можно прочитать про работу с OLE, в частности, для Word. Приложение должно формировать отчеты на основании вордовских шаблонов.
Заранее благодарен.
...
Рейтинг: 0 / 0
06.04.2005, 17:46
    #33001216
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
benzoСлышал, что работа через OLE c Word'ом некоторая урезанная. Это на самом деле так?
Хммм... а что считать "урезанным"?

И не сочтите за труд, посоветуйте , где можно прочитать про работу с OLE, в частности, для Word. Приложение должно формировать отчеты на основании вордовских шаблонов.
С Билдерячьей стороны это что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ole_object = CREATE OLEObject

IF ole_object.ConnectToNewObject("word.application") =  0  THEN
	DESTROY ole_object
	MessageBox('OLE Error','Cannot connect to Winword', Stopsign!)
	Return
END IF

ole_object.Documents.open(ls_named)
ole_object.Visible = TRUE
...

ole_object.ActiveDocument.SaveAs("ABCD.doc")
ole_object.DisconnectObject()
DESTROY ole_object

C Вордячьей стороны могу порекомендовать "c:\Program Files\Microsoft Office\Office\1049\VBAWRD9.CHM" (или как он там называется в Вашей версии офиса - у меня 2000-й русский). Ещё бывает полезно записать макрос и посмотреть на его исходник.
...
Рейтинг: 0 / 0
06.04.2005, 17:53
    #33001235
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
benzoИ не сочтите за труд, посоветуйте , где можно прочитать про работу с OLE, в частности, для Word.
OLE-программирование на PowerBuilder для Microsoft Word 97
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
07.04.2005, 17:19
    #33003266
benzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Спасибо. Но этого , к сожалению, мало.
Хочется вставлять таблицы и т.д.

Если можно, реальные примеры.
...
Рейтинг: 0 / 0
07.04.2005, 17:27
    #33003296
benzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Ну вот например. Читаю :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Using the Table Object
Use Tables(index), where index is the index number, to return a single Table object. The index number represents the position of the table in the selection, range, or document. The following example converts the first table in the active document to text.

ActiveDocument.Tables( 1 ).ConvertToText Separator:=wdSeparateByTabs
Use the Add method to add a table at the specified range. The following example adds a 3x4 table at the beginning of the active document.

Set myRange = ActiveDocument.Range(Start:= 0 , End:= 0 )
ActiveDocument.Tables.Add Range:=myRange, NumRows:= 3 , NumColumns:= 4 


А как это должно выглядеть из PowerBuilder'а ?
...
Рейтинг: 0 / 0
07.04.2005, 18:08
    #33003451
Vadim Romanenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
При работе с word'ом на таком уровне (например при реализации сложного форматирования) я бы посоветовал пользоваться макросами.
То есть нарисовать макрос возможно с какими-то параметрами, и вызывать его из ПБ.

Не знаю точно как в Word'е, но в Excel'е было куча головной боли с разрисованием табличек. Я забабахал набор макросов, которые потом и вызывал :)
...
Рейтинг: 0 / 0
07.04.2005, 18:10
    #33003455
Andrew Nagorny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Напиши DLL например на DELPHI(там нормальный интерфейс к Ворду) из Билдера вызывай ее функции.
...
Рейтинг: 0 / 0
07.04.2005, 18:27
    #33003497
benzo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
to Andrew Nagorny

Если бы я знал Deplhi.... то это, может быть, и было бы вариантом....
...
Рейтинг: 0 / 0
07.04.2005, 19:28
    #33003608
PaulJB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
> Приложение должно формировать отчеты на основании вордовских шаблонов.

Если только отчеты, то посмотри в эту сторону: http://www.vsi.ru/~apl/
Зовется RepoRTF.
Судя по примерам (которых предостаточно) - не плохая утилитка.
Единственное - она сохраняет не в Ворд-формате, а в RTF что в принципе не есть большая проблема, а в некоторых случаях и спасение. Поддерживаются таблицы. К ПБ ее прикрутить ИМХО особого труда не составит.
...
Рейтинг: 0 / 0
08.04.2005, 10:39
    #33004162
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Andrew NagornyНапиши DLL например на DELPHI(там нормальный интерфейс к Ворду) из Билдера вызывай ее функции.
Ой... не, я сам так кое с чем делаю, но работа с Word-ом - это последнее, что я бы запихнул в DLL.
...
Рейтинг: 0 / 0
08.04.2005, 10:57
    #33004222
Andrew Nagorny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
To Dim2000

И почему же?
...
Рейтинг: 0 / 0
08.04.2005, 11:21
    #33004302
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Andrew NagornyИ почему же?
Выгоды 0, дополнительной возни - не то чтобы много, но всё же есть.
...
Рейтинг: 0 / 0
08.04.2005, 11:56
    #33004433
Andrew Nagorny
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
не согласен, но думаю не будем разводить флуд
...
Рейтинг: 0 / 0
08.04.2005, 14:38
    #33005155
mit_yau
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
benzoНу вот например. Читаю :
Код: plaintext
1.
2.
3.
4.
5.
ActiveDocument.Tables( 1 ).ConvertToText Separator:=wdSeparateByTabs
Use the Add method to add a table at the specified range. The following example adds a 3x4 table at the beginning of the active document.

Set myRange = ActiveDocument.Range(Start:= 0 , End:= 0 )
ActiveDocument.Tables.Add Range:=myRange, NumRows:= 3 , NumColumns:= 4 


А как это должно выглядеть из PowerBuilder'а ?

Так же и будет. Только не забывать, что через ole_object работаешь. И не полениться поискать в хелпе по макроязыку и объектам VBA for Word (замечу, по умолчанию не устанавливается, в 97-м офисе по крайней мере) значения встроенных переменных - вот как wdSeparateByTabs, создать структуру/объект под них, и работать уже с ними - удобно и не напрягает вспоминать значения каждый раз.

Код: plaintext
1.
2.
3.
word_ole_object.ActiveDocument.Tables( 1 ).ConvertToText(n_word_const.wdSeparateByTabs)
word_ole_object_myRange = word_ole_object.ActiveDocument.Range( 0 , 0 )
word_ole_object.ActiveDocument.Tables.Add(word_ole_object_myRange,  3 , 4 )
По-моему, так. Правда, за давностью мог забыть. Но могу поискать свою старую процедуру, для конкретного примера.
...
Рейтинг: 0 / 0
08.04.2005, 15:00
    #33005255
mit_yau
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
mit_yau
Код: plaintext
1.
word_ole_object.ActiveDocument.Tables( 1 ).ConvertToText(n_word_const.wdSeparateByTabs)


word_ole_object.ActiveDocument.Tables [1] , разумеется.
И список констант, всё-таки, отдельным документом шёл.
А вообще, страничку Ikar'a посмотри, там наверняка это есть. :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
23.10.2008, 13:04
    #35611558
BliTZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
про OLE
Обискался везде, так и не нашел нужной функции. Задам здесь вопрос.
Подскажите, как вызывать макрос Excel из ПБ?
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / про OLE / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]