вставка данных из формы в word документ

Программирование на Visual Basic for Applications
emangik
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 22.04.2009 (Ср) 20:41

вставка данных из формы в word документ

Сообщение emangik » 23.04.2009 (Чт) 11:38

Добрый день.
Извиняюсь за свой ламерский вопрос. Сильно не ругайте. На форуме не нашел точного ответа на свой вопрос, наверно сильно детская у меня проблема. В VBA не силен а надо немного свою работу автоматизировать.
Есть два word"овских файла page1.doc и page2.doc Их использую как шаблон. Наделал в этих шаблонах кучу закладок куда надо вносить данные и создал следующую форму куда заношу все необходимые данные и затем при нажатии кнопки "сформировать документ" данные разносятся в эти документы.
Вот часть кода формы которая срабатывает при нажатии кнопки "сформировать документ" на этой форме:

Код: Выделить всё
Private Sub CommandButton2_Click()
     
Dim oDoc As Word.Document
    Set oDoc = Application.Documents.Add("c:\data\other\НеведомаяФигня\Page1.doc")
    Set oDoc1 = Application.Documents.Add("c:\data\other\НеведомаяФигня\Page2.doc")
oDoc.Bookmarks("fio1").Range.Text = TextBox1.Value
oDoc.Bookmarks("fio2").Range.Text = TextBox1.Value
oDoc.Bookmarks("burn").Range.Text = TextBox2.Value
oDoc.Bookmarks("mburn").Range.Text = TextBox3.Value
oDoc.Bookmarks("from").Range.Text = TextBox15.Value
oDoc.Bookmarks("pasport").Range.Text = TextBox4.Value
oDoc.Bookmarks("grazd").Range.Text = TextBox20.Value
oDoc.Bookmarks("sex").Range.Text = TextBox21.Value
oDoc.Bookmarks("inn").Range.Text = TextBox22.Value

oDoc.Bookmarks("mark").Range.Text = TextBox8.Value
oDoc.Bookmarks("type").Range.Text = TextBox9.Value
oDoc.Bookmarks("year").Range.Text = TextBox10.Value
oDoc.Bookmarks("country").Range.Text = TextBox11.Value
oDoc.Bookmarks("vin").Range.Text = TextBox6.Value
oDoc.Bookmarks("kuz").Range.Text = TextBox7.Value
oDoc.Bookmarks("dvig").Range.Text = TextBox12.Value
oDoc.Bookmarks("power").Range.Text = TextBox5.Value
oDoc.Bookmarks("obm").Range.Text = TextBox13.Value
oDoc.Bookmarks("spravk").Range.Text = TextBox14.Value
oDoc.Bookmarks("color").Range.Text = TextBox16.Value
oDoc.Bookmarks("massa").Range.Text = TextBox18.Value
oDoc.Bookmarks("massa2").Range.Text = TextBox19.Value
oDoc.Bookmarks("pasptc").Range.Text = TextBox23.Value


oDoc1.Bookmarks("mark").Range.Text = TextBox8.Value
oDoc1.Bookmarks("type").Range.Text = TextBox9.Value
oDoc1.Bookmarks("year").Range.Text = TextBox10.Value
oDoc1.Bookmarks("country").Range.Text = TextBox11.Value
oDoc1.Bookmarks("vin").Range.Text = TextBox6.Value
oDoc1.Bookmarks("kuz").Range.Text = TextBox7.Value
oDoc1.Bookmarks("dvig").Range.Text = TextBox12.Value

oDoc1.Bookmarks("spravk").Range.Text = TextBox14.Value
oDoc1.Bookmarks("color").Range.Text = TextBox16.Value
oDoc1.Bookmarks("pasptc").Range.Text = TextBox23.Value

UserForm2.Hide

End Sub


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

Заранее благодарен за ответ

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: вставка данных из формы в word документ

Сообщение RayShade » 23.04.2009 (Чт) 12:09

Хорошо бы еще и сами файлы приложить. Иначе неясно, куда там чего вставляется и не так съежает.
I don't understand. Sorry.

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: вставка данных из формы в word документ

Сообщение viter.alex » 24.04.2009 (Пт) 9:26

Во-первых, вы неправильно изменяете закладки. Текст у вас вставится в документ, но не в закладку, в сразу после нее.
Чтобы изменить текст закладки, нужно поступить хитрее. Воспользуйтесь такой процедурой, сделанной на основе примера из справки.
Код: Выделить всё
'процедура для обновления закладок. Требует для своей работы указать имя закладки и то, что нужно в нее поставить
Public Sub UpdateBookmarks(ByVal NameOfBookmark As String, ByVal ContentOfBookmark As String)
    Dim rng As Range, bm As Bookmarks
    Set bm = ActiveDocument.Bookmarks
    Set rng = bm(NameOfBookmark).Range
    rng.Text = ContentOfBookmark
    bm.Add NameOfBookmark, rng
End Sub

Во-вторых, чтобы все выглядело красио, используйте для оформления закладок стили и следите, чтобы в закладку без надобности не попадали символы абзаца.
Лучше день потерять — потом за пять минут долететь!

dormouse
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 140
Зарегистрирован: 10.01.2007 (Ср) 21:58
Откуда: Волжский

Re: вставка данных из формы в word документ

Сообщение dormouse » 24.04.2009 (Пт) 15:01

а DDE-связи никто не использует? или у них какие-то явные недостатки?

как это делается (если не знаем):
1. создаётся вордовский шаблон
2. создаётся любая база данных. например экселевская книга
3. в ворде включается панель инструментов "Слияние"
4. на этой панели нажимаем вторую слева кнопку "Открыть источник данных". Находим базу из п.2
5. Выбираем тип базы. Для экселевской выбираем "Книги MS Excel с помощью DDE". Ещё там выбираем рабочую область, если она имеет имя. по умолчанию предлагается "Весь лист".
6. Всё. связь установилась. в этом случае остальные кнопки на панели Слияния становятся доступными
7. Устанавливаем курсор в позиции вставки значения нужного поля базы.
8. Нажимаем на панели 6 слева кнопку "Вставить поле слияния".
9. В списке выбираем поле из базы и вставляем его.
10. повторяем 7-9 пункты для каждого поля в тексте документа
11. можно вставить поля ворда соответсвующей кнопкой. Это дата, номер страницы и другие автоматизируемые сведенья
12. Нажимаем кнопку "Поля/данные", которая переключит документ из режима конструирования в отображение данных.
13. Теперь файл можно сохранить и отдать пользователю. Навигация по базе осуществляется кнопками со стрелками на панели Слияния. Предусмотрен поиск нужной записи по полям, печать документа с пролистыванием всех записей базы и, даже формирвоание документов для рассылки по электропочте.
По данной схеме любой пользователь Микрософт-офиса способен создать любую базу данных и автоматически формируемые документы, ничего не программируя
VBA, MSA97


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

    TopList