Консультация № 140086
16.07.2008, 10:50
0.00 руб.
0 4 1
Добрый день эксперты. Вопрос такой. Надо создать программу для Word. Автозаполнитель. Есть 4 шаблона документов. В форме программы вводятся данные, а потом происходит автозаполнение документов. Вопрос в том, как в Word‘е cделать грамотно поля, которые могут изменятся через эту программу?

Обсуждение

Неизвестный
16.07.2008, 11:03
общий
это ответ
Здравствуйте, Соколов В.В.!
В документе Word расставить закладки в нужных местах (Вставка/Закладка), а потом расставить по закладкам нужные данные
Вот примерный код для VBA Excell:

Приложение:
Public Sub Print_soob()Const Path_RVK = "Путь\шаблон.dot"Dim x As Word.DocumentDim WS As Worksheet Set x = Word.Documents.Add(Template:=Path_RVK, NewTemplate:=False, DocumentType:=0) Set WS = ActiveSheet Call PrintToBookmark("закладка", WS.Cells(19, 2).Value,x) x.SaveAs Filename:="Новый файл.doc" Set x = Nothing Set WS = NothingEnd SubSub PrintToBookmark(Bkmrk As String, Stroka As Variant, x As Word.Document) With x.ActiveWindow.Selection .GoTo What:=wdGoToBookmark, Name:=Bkmrk .TypeText Text:=Stroka End WithEnd Sub
Неизвестный
16.07.2008, 11:25
общий
Ругается... на Dim WS As Worksheet. А ввод данных через переменную Stroka? У меня получается в тексте около 25 закладок, некотрые с разными названиями, некотрые нет. Как контролировать в какую закладку вставить нужнвй текст? Я предполагаю писать текст textbox`ах.
Неизвестный
17.07.2008, 15:00
общий
Здравствуйте Соколов В.В.
Предложенный Сергеем Ивановичем код предпологает заполнение документа Word данными с листа Excel,
и потому "Ругается... на Dim WS As...", отсутствие подключеной библиотеки.
При заполнении документа данными из формы объявлять и использовать эту переменную нет необходимости
данные будут не с ячеек листа (WS.Cells(19, 2).Value), а из контролов формы например:
Dim s AS String
s = Me.Text1.Text

Если "около 25 закладок" то удобнее задавать им и контролам формы последовательные имена например:
Label10, Label11,....
Text10, Text11...

И тогда можно будет организовать подобный цикл заполнения:

For i = 10 To 35
s = Me("Text" & i ).Text
Call PrintToBookmark("Label" & i , s, x)
Next

Евгений.
Неизвестный
22.07.2008, 10:44
общий
Здравствуйте Соколов В.В.
По вашему вопросу есть обрезец решения в заметке Использование форм для ввода данных в документ. Там описывается пример шаблона с формой для последующего автозаполнения данных в создаваемом на основе этого шаблона документе.
Форма ответа