Страница 1 из 1

Вопросы по работе с MS Word из Clarion 6.0

Добавлено: 26 Январь 2013, 10:39
sasa72
Здравствуйте Все.
На Кларионе пишу давно, но очень периодически. Ole никогда не применял до этого случая. Поэтому ответы, если можно , разжуйте побольше :)

Из Clarion 6.0 данные выводятся в шаблон word/
За основу взял пример Андрея Попова
loc:WordFileName='C:\atest.doc'
d=DAY(today())&MONTH(today())&YEAR(today())
loc:SaveWordFileName='C:\atest '&d&' .doc'
feqOLE=create(0,CREATE:Ole)
feqOLE{Prop:Create}='Word.Application'
feqOLE{Prop:ReportException}=TRUE
feqOLE{'Visible'}=1
feqOLE{'Documents.Open("'&clip(loc:WordFileName)&'")'}
loc:FindStr='[DATA:obr]'
loc:ReplaceString=SPS:obr !строка из базы
feqOLE{'Selection.Find.ClearFormatting'}
feqOLE{'Selection.Find.Replacement.ClearFormatting'}
feqOLE{'Application.Selection.Find.Execute("'&clip(loc:FindStr)&'", , , , , , 1, 1, , "'&clip(loc:ReplaceString)&'", 2)'}


На этом уровне все работает, но есть вопросы:
1. Где мне найти описание, например, строки
feqOLE{'Application.Selection.Find.Execute("'&clip(loc:FindStr)&'", , , , , , 1, 1, , "'&clip(loc:ReplaceString)&'", 2)'}
А то никак не понимаю почему "это" является поиском и заменой метки до конца документа.
2. Нужно вставить большой текст (например 1000 символов). Один из путей - срастить несколько string из базы.
Как это будет выглядеть? Какие варианты еще есть? Ну там BLOB может можно использовать?
Просто в интернете встретил инфу об ограничении ReplaceString в 256 символов
3. В Шаблоне есть таблица.
Нужно добавлять строки.
Можно поставить в последнюю ячейку метку и имитировать нажатие Tab.
Но как? Или есть более простой путь?

Где скачать шаблоны SoftMasters не нашел. Может с ними было бы все проще :(

Re: Вопросы по работе с MS Word из Clarion 6.0

Добавлено: 26 Январь 2013, 12:43
gromov
1. Где мне найти описание, например, строки
feqOLE{'Application.Selection.Find.Execute("'&clip(loc:FindStr)&'", , , , , , 1, 1, , "'&clip(loc:ReplaceString)&'", 2)'}
А то никак не понимаю почему "это" является поиском и заменой метки до конца документа.
В VBA
2. Нужно вставить большой текст (например 1000 символов). Один из путей - срастить несколько string из базы.
Как это будет выглядеть? Какие варианты еще есть? Ну там BLOB может можно использовать?
Отрезать от текста куски по 256 символов и отправлять в Ворд
Просто в интернете встретил инфу об ограничении ReplaceString в 256 символов
3. В Шаблоне есть таблица.
Нужно добавлять строки.
Как вариант сделать таблицу в Экселе и копипастом отправить в Ворд

Re: Вопросы по работе с MS Word из Clarion 6.0

Добавлено: 28 Январь 2013, 10:50
kreator
В Word'е пишешь макрос, а оттуда (из Visual Basic) вытягиваешь текст. Правда, его надо подрихтовать по Clarion, но это другой вопрос.

Re: Вопросы по работе с MS Word из Clarion 6.0

Добавлено: 31 Январь 2013, 14:35
sasa72
Спасибо за ответы.
Может кому пригодится:
feqOLE{'Selection.TypeParagraph'} !Перевод каретки
feqOLE{'Selection.Font.Size'} = 14 !Размер шрифта 14
loc:ReplaceString=i&'. '&clip(qw) !Вставляем 1 часть вопроса в word на текущую позицию
feqOLE{'Selection.Find.ClearFormatting'}
feqOLE{'Selection.Find.Replacement.ClearFormatting'}
feqOLE{'Application.Selection.TypeText ("'&clip(loc:ReplaceString)&'"),'}
loc:ReplaceString=' '&clip(qw1) !Через пробел добавляем второй string
feqOLE{'Selection.Find.ClearFormatting'}
feqOLE{'Selection.Find.Replacement.ClearFormatting'}
feqOLE{'Selection.TypeParagraph'} !Перевод каретки
feqOLE{'Application.Selection.TypeText ("'&clip(loc:ReplaceString)&'"),'}

Re: Вопросы по работе с MS Word из Clarion 6.0

Добавлено: 01 Февраль 2013, 12:33
gromov
А тебе м.б. это пригодится

wdOLE{'ActiveWindow.ActivePane.View.SeekView'} = 9 ! верхний колонтитул
! здесь можно установить параметры шрифта и вставить текст
wdOLE{'ActiveWindow.ActivePane.View.SeekView'} = 10 ! нижний колонтитул
! здесь можно установить параметры шрифта и вставить текст
wdOLE{'ActiveWindow.ActivePane.View.SeekView'} = 0

Re: Вопросы по работе с MS Word из Clarion 6.0

Добавлено: 02 Февраль 2013, 10:11
sasa72
Спасибо