Автор | Сообщение |
|
| |
Пост N: 2
Зарегистрирован: 22.04.15
|
|
Отправлено: 22.04.15 20:48. Заголовок: шаблон Microsoft Word
Кто подскажет (и покажет) - требуется использовать шаблон Word (взаимодействие - подготовка, открытие, передача параметров и т.д.), то есть требуется подготовить определенный шаблон Word, передать параметры с программы, сохранить в формате docx в определенном месте или направить на печать.
|
|
|
Ответов - 103
, стр:
1
2
3
4
5
6
All
[только новые]
|
|
|
| |
Пост N: 4757
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.04.15 15:27. Заголовок: Вероятно все действи..
Вероятно все действия проделать в WORD с записью в макрос а затем пробовать все повторить в Harbour используя текст макроса.
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 22.04.15
|
|
Отправлено: 25.04.15 10:39. Заголовок: шаблон Microsoft Word
спс но... данный вариант я итак использую... - то есть я в программе создаю весь документ Word, а при изменении текста в Word, соответственно приходится изменять исходный код в программе. - хотелось бы использовать шаблон Word, чтобы при изменении текста в документе - пользователям и мне достаточно было изменить этот шаблон не изменяя исходный код программы И во-вторых, в дальнейшем мне было бы достаточно предоставить =Справочник выходных переменных=, с помощью которого пользователи могли бы создавать свои любые отчеты, документы - просто создав шаблон, указав переменные и установив в определенную директорию моей программы.
|
|
|
|
| |
Пост N: 4761
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.15 13:17. Заголовок: Так сразу и храни эт..
Так сразу и храни эти переменные в шаблоне. Затем его грузим , поиск и замена переменных по тексту из справочника. И все. Например шаблон: Директор [value1] Бухгалтер [blabla] В справочнике есть value1 и есть на что ее заменять , как и blabla.
|
|
|
|
| |
Пост 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
|
|
|
|
| |
Пост N: 4782
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.04.15 18:59. Заголовок: SadStar3333 пишет: ..
SadStar3333 пишет: цитата: | то возможно подойдет мое решение |
| Да тоже нормальный вариант !
|
|
|
|
| постоянный участник
|
Пост N: 5175
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.11.16 22:17. Заголовок: Думал что не буду по..
Думал что не буду пользоваться таблицами Ворда. А не получилось, нужно делать.... Подскажите решение (может кто поделиться функциями) как сделать из шаблона таблицы Ворда: как найти в тексте таблицу, как сделать добавление столбца и вставку данных из базы ?
|
|
|
|
| Администратор
|
Пост 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*
|
|
|
|
| постоянный участник
|
Пост N: 5176
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.11.16 10:58. Заголовок: Pasha пишет: Если п..
Pasha пишет: цитата: | Если поставить закладку внутри таблицы, то найти ее можно так: |
| Спасибо БОЛЬШОЕ !
|
|
|
|
| постоянный участник
|
Пост 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 не занимался этим.
|
|
|
|
| Администратор
|
Пост 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* поправил опечатки
|
|
|
|
| постоянный участник
|
Пост N: 5194
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.16 14:39. Заголовок: Pasha СПАСИБО БОЛЬШО..
Pasha СПАСИБО БОЛЬШОЕ !!! Пошёл делать...
|
|
|
|
|
| постоянный участник
|
Пост 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* ?
|
|
|
|
| |
Пост N: 6163
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.12.16 19:04. Заголовок: Andrey Попробуй вар..
Andrey Попробуй вариант с созданием таблицы в EXCEL и после просто скопируй ее и вставь в WORD , должно сработать , да и гимора меньше мне кажется. PS Проверил в рукопашную , работает на ура
|
|
|
|
| постоянный участник
|
Пост N: 5198
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.16 19:21. Заголовок: Dima пишет: Попробу..
Dima пишет: цитата: | Попробуй вариант с созданием таблицы в EXCEL и после просто скопируй ее и вставь в WORD , должно сработать , да и гимора меньше мне кажется. |
| Не пойдёт. Нужно пример сделать для учёбы. Чтобы потом любой желающий к себе в прогу забирал. Пример работы с EXCEL я сделал ( с вашей помощью). Теперь нужно так же с Вордом сделать. У меня есть вставка/замена через rtf файл, есть с закладками. Но это не то. Этот пример гибче будет. Да и работы с таблицами в Ворде так и не нашёл нигде. Будем биться с Вордом !
|
|
|
|
| |
Пост N: 6164
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.12.16 19:44. Заголовок: Andrey пишет: Будем..
Andrey пишет: Удачи !
|
|
|
|
| постоянный участник
|
Пост N: 5200
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.16 18:47. Заголовок: Вот здесь есть похож..
|
|
|
|
| постоянный участник
|
Пост 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)
|
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост 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() Как это сделать ?
|
|
|
|
| постоянный участник
|
Пост 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 )
|
|
|
Ответов - 103
, стр:
1
2
3
4
5
6
All
[только новые]
|
|