On-line: гостей 3. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 2
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 22.04.15 20:48. Заголовок: шаблон Microsoft Word


Кто подскажет (и покажет) - требуется использовать шаблон Word (взаимодействие - подготовка, открытие, передача параметров и т.д.), то есть требуется подготовить определенный шаблон Word, передать параметры с программы, сохранить в формате docx в определенном месте или направить на печать.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 103 , стр: 1 2 3 4 5 6 All [только новые]


администратор




Пост N: 4757
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.04.15 15:27. Заголовок: Вероятно все действи..


Вероятно все действия проделать в WORD с записью в макрос а затем пробовать
все повторить в Harbour используя текст макроса.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 25.04.15 10:39. Заголовок: шаблон Microsoft Word


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

И во-вторых, в дальнейшем мне было бы достаточно предоставить =Справочник выходных переменных=, с помощью которого пользователи могли бы создавать свои любые отчеты, документы - просто создав шаблон, указав переменные и установив в определенную директорию моей программы.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4761
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.15 13:17. Заголовок: Так сразу и храни эт..


Так сразу и храни эти переменные в шаблоне. Затем его грузим ,
поиск и замена переменных по тексту из справочника. И все.

Например шаблон:

Директор [value1]
Бухгалтер [blabla]

В справочнике есть value1 и есть на что ее заменять ,
как и blabla.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 28.11.14
ссылка на сообщение  Отправлено: 27.04.15 08:00. Заголовок: если я правильно пон..


если я правильно понял проблему
то возможно подойдет мое решение (о котором я уже здесь упоминал)

1. Нужные места в документе ворд помечаю именами.
В 2003-м - Меню/Вставка/Закладка

2. в программе делаю так

 
....
aAdd(aBookMarks, {"Team", s})
aAdd(aBookMarks, {"Sign3", wMain.txt_Manager3.Value})
aAdd(aBookMarks, {"Sign4", wMain.txt_Manager4.Value})
aAdd(aBookMarks, {"Sign2", wMain.txt_Manager2.Value})



If oResDoc:Bookmarks:Count > 0
BkMrk:=""
For Each BkMrk In oResDoc:Bookmarks
bmName:=BkMrk:Name
if (n:=AScan( aBookMarks, {|x| x[ 1 ] == bmName} ))>0
//BkMrk:Range := BkMrk:Name
BkMrk:Range := aBookMarks[n,2]
endif
Next //BkMrk
EndIf


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4782
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.04.15 18:59. Заголовок: SadStar3333 пишет: ..


SadStar3333 пишет:

 цитата:
то возможно подойдет мое решение


Да тоже нормальный вариант !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5175
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.11.16 22:17. Заголовок: Думал что не буду по..


Думал что не буду пользоваться таблицами Ворда. А не получилось, нужно делать....
Подскажите решение (может кто поделиться функциями) как сделать из шаблона таблицы Ворда:
как найти в тексте таблицу, как сделать добавление столбца и вставку данных из базы ?

Хочу использовать простой шаблон, типа:




Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3502
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.11.16 08:08. Заголовок: Если поставить закла..


Если поставить закладку внутри таблицы, то найти ее можно так:

oSelect:Goto(-1,,, <BookmarkName>)

Вставить столбец в таблицу в указанном месте можно вызовами методов:

oSelect:InsertColumns()

или

oSelect:InsertColumnsRight()

Вставить текст:

oSelect:TypeText(<text>)

Перемещение между ячейками таблицы:

oSelect:MoveRight(1, 1)

аналогично есть методы MoveLeft, MoveUp, MoveDown, и еще несколько Move*


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5176
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.11.16 10:58. Заголовок: Pasha пишет: Если п..


Pasha пишет:

 цитата:
Если поставить закладку внутри таблицы, то найти ее можно так:


Спасибо БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5192
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.11.16 21:48. Заголовок: Всем привет ! Вопрос..


Всем привет !
Вопрос возник по ходу решения поиск/замена выражения в Ворде.
Не хочу делать закладку, уже имел печальный опыт, юзера при правке шаблона стирают закладки.
Если будет стоять текст другого цвета (у меня в шаблоне синий) то они этот текст не трогают.
Сделал макрос поиск/замена всех строк:
 
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "#M->Date1"
.Replacement.Text = "01/01/2016"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Как его перевести на Харбор ?
Помогите пожалуйста, уже лет 5 не занимался этим.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3510
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.12.16 08:10. Заголовок: Вместо точки ставить..


Вместо точки ставить двоеточие
После вызова метода ставить скобки
Так:

oFind := oSelec:Find
oFind:ClearFormatting()
oFind:Replacement:ClearFormatting()
oFind:Text := "#M->Date1"
oFind:Replacement:Text := "01/01/2016"
oFind:Forward := .T.
oFind:Wrap := 1
и так далее
в конце
oFind:Execute(,,,,,,,,,, 2)

справку по методам смотреть в файле VBAWD10.CHM

Из этого файла:

Runs the specified find operation. Returns True if the find operation is successful. Boolean.

expression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)

видно, что Replace - это 11-й параметр метода Execute. В таком порядке и надо передавать значения
ну и подставлять значения констант wd*

поправил опечатки

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5194
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.16 14:39. Заголовок: Pasha СПАСИБО БОЛЬШО..


Pasha СПАСИБО БОЛЬШОЕ !!!
Пошёл делать...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5197
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.16 18:57. Заголовок: Сразу большая непоня..


Сразу большая непонятка.
Открываю Ворд так:
    oWord := TOleAuto():New( "Word.Application" ) 
oDocs := oWord:Documents
oDocs:Open( cFileDoc )
oActive := oWord:ActiveDocument
oSelect := oWord:Selection

oFind: нужно менять на что ?
Не пойму где здесь работа с oFind

И ещё вопрос, если есть #include "word.ch" можно же не менять значения констант wd* ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6163
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.12.16 19:04. Заголовок: Andrey Попробуй вар..


Andrey
Попробуй вариант с созданием таблицы в EXCEL и после просто скопируй ее и вставь в WORD ,
должно сработать , да и гимора меньше мне кажется.

PS
Проверил в рукопашную , работает на ура

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5198
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.16 19:21. Заголовок: Dima пишет: Попробу..


Dima пишет:

 цитата:
Попробуй вариант с созданием таблицы в EXCEL и после просто скопируй ее и вставь в WORD ,
должно сработать , да и гимора меньше мне кажется.



Не пойдёт. Нужно пример сделать для учёбы. Чтобы потом любой желающий к себе в прогу забирал.
Пример работы с EXCEL я сделал ( с вашей помощью). Теперь нужно так же с Вордом сделать.
У меня есть вставка/замена через rtf файл, есть с закладками. Но это не то. Этот пример гибче будет.
Да и работы с таблицами в Ворде так и не нашёл нигде.

Будем биться с Вордом !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6164
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.12.16 19:44. Заголовок: Andrey пишет: Будем..


Andrey пишет:

 цитата:
Будем биться с Вордом !


Удачи !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5200
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.16 18:47. Заголовок: Вот здесь есть похож..


Вот здесь есть похожее решение.
http://clipper.borda.ru/?1-4-0-00001048-000-0-0-1426699788

С помощью Паши и Haz - поиск/замена заработала !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5201
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.16 20:35. Заголовок: Как получить хендл о..


Как получить хендл открытого Вордом окна ?

Для Экселя знаю как получить:
    // окно таблицы Excel на передний план 
hWnd := oExcel:hWnd
ShowWindow( hWnd, 3 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop( hWnd )

Для Ворда не срабатывает...
hWnd := oWord:hWnd

Выдаёт ошибку:
Error Word.Application/0 S_OK: HWND</p>
Called from TOLEAUTO:HWND(0)
Called from MYWORD2OLE(56)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1355
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.12.16 21:23. Заголовок: Если для Excel exp..


Если для Excel

expression .Hwnd
expression A variable that represents an Application object.

то в Word

expression .Hwnd
expression A variable that represents a Window object.

Поэтому, должно сработать что-то типа
hWnd := oWord:ActiveDocument:ActiveWindow:Hwnd

или oWord:Windows("Document1"):Hwnd

ShowWindow( hWnd, 3 )..
можно заменить на
:Windows("Document1"):Activate
:Windows("Document1"):WindowState := wdWindowStateMaximize


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5202
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.16 22:28. Заголовок: Петр пишет: oWord:W..


Петр пишет:

 цитата:
oWord:Windows("Document1"):Hwnd



Не работает !
Причём у меня Русский MS Word и всегда создаётся "Документ2", у юзеров тоже может быть по другому.

Вот и не хочется делать перебор разных вариантов:
   cTitle  := "Документ2 - MICROSOFT WORD" 
cTitle2 := "Документ2 [Режим ограниченной функциональности] - MICROSOFT WORD"
hWnd := FindWindowEx(,,, cTitle )
hWnd2 := FindWindowEx(,,, cTitle2 )


А получить хенд созданного ворд-документа:
oWord:Documents:Add()
oActive := oWord:ActiveDocument()
oMarks := oActive:BookMarks
oText := oWord:Selection()

Как это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1356
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 00:08. Заголовок: Andrey пишет: Не ра..


Andrey пишет:

 цитата:
Не работает !


Да, действительно, хотя по документации должно бы работать.

Andrey пишет:

 цитата:
А получить хенд созданного ворд-документа:
oWord:Documents:Add()
oActive := oWord:ActiveDocument()



Пробуйте так

oWord:Documents:Add()
oActive := oWord:ActiveDocument()

cTitle := oActive:Name
hWnd := FindWindowEx(,,, cTitle )


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 103 , стр: 1 2 3 4 5 6 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 92
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет