Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/203: Рейтинг темы: голосов - 203, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 73

Автозаполнение документа Word

16.02.2010, 14:57. Показов 43205. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть данные которые храняться в таблицах, нужно создать макрос который бы сначала обновлял таблицу которая будет использована для автозаполнения а потом запускал сам процесс автозаполнения... ну как то так наверное....
вообщем так:
насколько я правильно понял что автозаполнение можно реализовать только из таблицы...еще и одной... т.е. придеться для начала создать такову и после добавления данных добавлять их туды...
может я и не прав...
подскажите?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2010, 14:57
Ответы с готовыми решениями:

Автозаполнение документа Word из Access
Здравствуйте! у меня задание сделать подсистему для автоматизации работы классного руководителя. Программа должна работать на...

Автозаполнение шаблонов WORD
Доброго времени дня! Нужна Ваша помощь с автозаполнением писем. Из-за большого потока клиентов просто не успевал заполнять четыре...

Автозаполнение шаблона Word из формы в Access использованием закладок
Уважаемые программисты! Нужен ваш совет в реализации автозаполнения шаблона договора в word из формы в access. Конечная цель моих стараний...

27
 Аватар для garik8000
47 / 47 / 3
Регистрация: 09.12.2009
Сообщений: 154
16.02.2010, 15:03
животрепещущая тема, написать код для автозаполения документов Word с таблиц мне пока не удалось, работаю в этом направлении... я думаю е сть у добрых людей наработки...
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
16.02.2010, 15:05
Цитата Сообщение от nanaec Посмотреть сообщение
сначала обновлял таблицу
ты про какой макрос ваще говоришь-то?
и как это обновлял?

Цитата Сообщение от nanaec Посмотреть сообщение
процесс автозаполнения
эт чо?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
16.02.2010, 15:05
nanaec, как вариант можно использовать слияние в ворде, очень удобная штука для формирования кучи документов по шаблону и источнику данных
1
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 73
16.02.2010, 15:05  [ТС]
ого-го я то думал это просто... чтож подождём добрых людей
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
16.02.2010, 15:05
ааа. понял чо ты хошь.
0
0 / 0 / 0
Регистрация: 09.02.2010
Сообщений: 73
16.02.2010, 15:12  [ТС]
ту: cyberburunduk - не эт не макрос.... эт код ... должен быть такой...
вообщем нужно процесс слияния сделать на раз два, открыл документ(шаблон), выбрал там нужное тело и усё.
ну или может у кого еще идеи есть по этому поводу... просто стандартное слияние оч долгий процесс, проще от руки...
а мне как раз и надо чтоб щёлк раз, щёлк два, и на печать...
я не прошу сразу дать мне код в открытом виде... я хочу разобраться и найти оптимальное решение под эту задачу.
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
16.02.2010, 15:35
Лучший ответ Сообщение было отмечено как решение

Решение

Экспорт в Word, Пример экспорта данных из Access в Word
Иногда возникают ситуации, когда требуется автоматически внести данные в один из типовых документов: служебную записку, письмо, договор и т. д. Причем не всегда такие документы можно сформировать, используя отчеты Access. Например:

* требуется сформировать договор, который, как правило, представляет собой довольно длинный текстовый документ, в который нужно вставить несколько чисел или строк – например даты.
* нужно обеспечить возможность ручного редактирования текста документа. Например, существует стандартный шаблон документа, который пользователь должен иметь возможность редактировать. Если использовать отчет Access, то придется открывать пользователю доступ к исходному коду.
* документ должен быть сохранен в виде текстового файла (отчет Access может быть только напечатан). Иногда бывают и такие условия.

Обычно вывод отчета в документ Word применяют, когда необходимо вручную корректировать данные отчета. Чаще всего, при этом создается шаблон документа и затем программно вставляется в нужные места текст. Это проще, чем полностью программно составлять весь документ, хотя возможно и такое.
Вообще, каждый документ Microsoft Word основан на шаблоне. Шаблон определяет основную структуру документа и содержит настройки документа, такие как элементы автотекста, шрифты, назначенные сочетания клавиш, макросы, меню, параметры страницы, форматирование и стили. В нашем же случае, необходимо просто создать макет отчета подобно тому как это делается в Access. Для этого создаем обычный документ Word, затем в меню Файл – Сохранить как выбираем тип файла – Шаблон документа. В результате получим документ Word с расширением .dot – шаблон.
Для редактирования шаблона лучше его открывать не двойным щелчком, как обычный документ, а например, через контекстное меню: правой кнопкой – и выбрать пункт открыть. В противном случае при попытке сохранения придется повторно задавать формат документа – шаблон (.dot), иначе он будет сохранен как обычный документ Word (.doc).
В качестве примера создадим шаблон реквизитов заказчика. Оформить его можно например так: создать заголовок, затем таблицу, куда будут вставлены реквизиты. Вставлять данные лучше в таблицу, так как в этом случае если текст не влезет в ширину столбца, то столбец автоматически увеличится по высоте. А вот если вставлять текст просто в заданное место, то при аналогичной ситуации не умещаемые данные появятся с новой строки, что изменит макет шаблона.
А теперь собственно о технологии вставки текста в нужное место. Чтобы вставить текст, сначала нужно определить место, куда он должен вставляться. В данном примере это делается при помощи «Закладок» (смотрим в меню документа Word: Вставка – Закладка).

Закладка — это элемент документа, которому присвоено уникальное имя. Это имя можно использовать для последующих ссылок. Например, можно использовать закладку для определения текста, который необходимо проверить позже. Чтобы в следующий раз не искать данный текст во всем документе, можно перейти к нему с помощью диалогового окна Закладка.
В нашем случае закладками являются элементы шаблона, выделенные курсивом (смотрим в папку Dot). Создаются они очень просто:

* Выделите элемент, которому следует назначить закладку – например курсивный текст Заказчик
* В меню Вставка выберите команду Закладка
* В поле Имя закладки введите или выберите нужное имя – в данном случае вводим имя «Заказчик». Имя закладки должно начинаться с буквы, в нем могут использоваться цифры, но не должно быть пробелов. Если потребуется разделить слова в имени закладки, можно использовать знак подчеркивания, например: Главный_заказчик.
* Нажмите кнопку Добавить.

В итоге получили закладку с именем «Заказчик». В принципе, можно было просто установить курсор в нужное место и вышесказанным образом создать закладку. Но тогда для просмотра, где какая закладка установлена в документе нужно будет через меню Вставка – Закладка выбрать имя закладки и нажать кнопку Перейти. Это неудобно, проще и нагляднее создать одноименный текст в документе.
Теперь осталось создать функцию, которая бы открывала созданный шаблон Word, вставляла бы туда вместо закладок нужный текст и сохраняла созданный документ под заданным именем. В прошлой статье уже рассказывалось о способах открытия документов Office. Осталось только выяснить, как обратиться к закладке. Делается это при помощи свойства документа Bookmarks.Item Например:

Visual Basic
1
Bookmarks.Item("Заказчик").Range.Text = Nz(Заказчик, "")
Здесь идет обращение к закладке под именем Заказчик и при помощи ее свойства Text ей присваивается нужное значение – в данном случае содержимое одноименного поля на форме. На случай, если в поле нет данных, применена функция Nz(Значение, Значение если Null).
Документ создается под именем инициалов заказчика, поэтому данное поле не должно быть пустым. Это реализовано при помощи свойства поля (см. конструктор таблиц) «Обязательное поле - Да». Кроме того, в приведенном примере так же реализована процедура поиска ранее созданного документа при помощи стандартной функции Dir. Если документ не найден, то создается новый документ Word на основе шаблона

Visual Basic
1
2
3
Set app = New Word.Application
app.Visible = True
app.Documents.Add strPathDot
если же такой документ существует, то выводится соответствующее сообщение: «Документ с таким именем ранее уже был создан. Заменить его?» При выборе «Да» создается новый документ взамен старого, при выборе «Нет» открывается старый документ

Visual Basic
1
2
3
4
5
Set app = CreateObject("Word.Application")
With app
      .Visible = True
      .Documents.Open strPathWord
End With
примечания
1. для Word.Application и иже с ним нужно подключать библиотеку в референсах:
редактор vba -> tools -> references -> microsoft word x.x object library
2. статейный пример был для небольшого вывода строк (реквизиты предприятия). Для большего количества проще будет создать запрос и процедуру, "читающую" столбцы запроса (вместо пробегания по контролам формы).
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Set app = New Word.Application
app.Visible = True
app.Documents.Add strPathDot
With app.ActiveDocument
    Set rst = CurrentDb.OpenRecordset("Имя запроса")
      On Error Resume Next
      For i = 1 To rst.Fields.Count
          Bookmarks.Item(rst.Fields(i).Name).Range.Text = rst.Fields(i)
      Next i
      rst.Close
      .SaveAs strPathWord
End With
Set app = Nothing
3.
Visual Basic
1
Dim rst As DAO.Recordset
Иногда если явно не указывать библиотеку DAO глючит
И на DAO 3.6 ссылку в референсах нужно поставить
(с)пернуто с одного из форумов


Добавлено через 18 минут
кстати, подобный вопрос уже на форуме обсуждался Вывод информации в Word
6
7 / 7 / 0
Регистрация: 25.07.2007
Сообщений: 74
16.02.2010, 16:20
Если нужно вставлять данные из таблицы Access - в Документ Word (в шаблонный документ, например формирование договоров в Word на основе данных из таблицы Access), то лучше всего подойдут закладки (Bookmarks).
0
1 / 1 / 0
Регистрация: 04.02.2013
Сообщений: 30
24.07.2013, 13:27
уменя вопрос! я немного не понял куда программый код писать?
1
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
24.07.2013, 13:33
Цитата Сообщение от biver64 Посмотреть сообщение
уменя вопрос! я немного не понял куда программый код писать?
Показанные выше фрагменты кода над вставлять в процедуры, записанные в каком-нибудь из общих модулей ВБА в Access.
0
1 / 1 / 0
Регистрация: 04.02.2013
Сообщений: 30
24.07.2013, 13:59
Цитата Сообщение от mobile Посмотреть сообщение
Показанные выше фрагменты кода над вставлять в процедуры, записанные в каком-нибудь из общих модулей ВБА в Access.
как я понял файл привязывается к БД в свойствах?
0
32 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
26.07.2013, 04:12
очень интересненько. А я все 30 видов документов в отчетах поделала. Офигенно работает. Проблема только в том, что в 2010 не предусмотрели чтобы текст выравнивался равномерно слева и справа и при этом чтобы если на последнюю строку попадает одно слово или 2-3, чтобы эти слова выравнивались по левому краю. Растягиваются зараза на всю стоку. Приходится изворачиваться. я эти 2-3 слова вырезаю и вставляю в следующее специально созданное поле но в нем выравниваю по левому краю.

Правда только с договорами такая фигня наблюдается, там где много текста.

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

А есть ли какие-то преимущества у слияние данных с вордом перед отчетами?
0
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 7
09.04.2016, 19:12
Подскажите пожалуйста,
Цитата Сообщение от БурундукЪ Посмотреть сообщение
Экспорт в Word, Пример экспорта данных из Access в Word
код из статьи работает в mdb, но не работает в accdb. Директория и документ не создаются, открывается примененный шаблон без замен, либо вообще пустой документ. 10й офис, DAO36 подключено.

Код полностью:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Option Compare Database
Option Explicit
 
Dim strPathDot As String, strPathWord As String
Dim app As Word.Application
 
'проверка наличия закладки
Private Function TrueBookmark(ByVal BookmarkName As String, ByVal wa As Word.Document) As Boolean
Dim i As Integer
For i = 1 To wa.Bookmarks.Count
If wa.Bookmarks(i).Name = BookmarkName Then
TrueBookmark = True
Exit For
End If
Next i
End Function
Function funOutputWord(strPathDot As String, strPathWord As String) As Boolean
On Error GoTo Err_
 
Dim DlgUser As Integer, i As Long
 
'проверяем наличие софрмированного ранее документа
If Dir(strPathWord) <> "" Then 'если нашелся документ по заданому в strPathWord полному пути (вместе с именем)
DlgUser = MsgBox("Документ с таким именем ранее уже был создан. Заменить его?", vbYesNo, "admin")
If DlgUser = vbNo Then 'если пользователь выбрал Нет - то открываем прежний вариант документа
Set app = CreateObject("Word.Application") 'создаем объект Word, чтобы можно было работать с его методами и свойствами
With app
.Visible = True 'запускаем приложение Word
.Documents.Open strPathWord 'открываем документ (по пути в переменной strPathWord)
End With
Set app = Nothing 'уничтожаем переменную
Else 'если пользователь выбрал Да - то есть согласился перезаписать документ
GoTo nn 'переходим по метке nn
End If
Else 'если не нашлось документа по заданому в strPathWord полному пути
nn:
Set app = New Word.Application 'делаем ссылку на объект Word для создания нового документа
app.Visible = True 'запускаем приложение Word
app.Documents.Add strPathDot 'присоединяем к объекту Word шаблон по заданому пути
With app.ActiveDocument 'делаем ссылку на активный документ - в данном случае тот что формируется
'находим закладку по имени в заменяем ее на текст из поля формы
.Bookmarks.Item("Заказчик").Range.Text = Nz(txtFullName, "")
.Bookmarks.Item("Телефон").Range.Text = Nz(txtMobilePhone, "")
.Bookmarks.Item("Дата").Range.Text = Nz(txtDate, "")
.Bookmarks.Item("Адрес").Range.Text = Nz(txtAddress, "")
.Bookmarks.Item("Постройки").Range.Text = Nz(txtBuildList, "")
.Bookmarks.Item("КадНомер").Range.Text = Nz(txtCadNom, "")
.Bookmarks.Item("Площадь").Range.Text = Nz(txtArea, "")
.Bookmarks.Item("Фундамент").Range.Text = Nz(txtFund, "")
.Bookmarks.Item("Стены").Range.Text = Nz(txtWall, "")
.Bookmarks.Item("Перекрытия").Range.Text = Nz(txtCross, "")
.Bookmarks.Item("Кровля").Range.Text = Nz(txtRoof, "")
 
'Чистим незаполненные закладки
With .Bookmarks
For i = .Count To 1 Step -1
'если имя Bookmark совпадает с его содержимым
If .Item(i).Name = .Item(i).Range.Text Then
'Удаляем содержимое (вместе с ним удаляется и сама Bookmark)
.Item(i).Range.Text = ""
End If
Next i
End With
 
.SaveAs strPathWord 'сохраняем созданный документ по заданному пути strPathWord
End With
Set app = Nothing 'уничтожаем переменную
End If
funOutputWord = True 'ставим флаг успешного выполнения функции
 
Exit_:
Exit Function
Err_:
funOutputWord = False
Err.Clear
app.Quit
Resume Exit_
End Function
 
Private Sub btnCrTask_Click()
Call funOutputWord(strPathDot, strPathWord)
End Sub
Private Sub Form_Open(Cancel As Integer)
Me.Controls!txtFullName.Visible = False
 
'Dim a, b As String
'a = Me!txtID
'b = Me!txtLastName
 
'указываем абсолютный путь к шаблону документа, по которму будем формировать свой документ
strPathDot = CurrentProject.Path & "\Dot" & "ЗаданиеНаРазработку.dot"
'указываем под каким именем сохранять создаваемый документ
'при этом добавляем к имени значение кода записи
'DatePart(Year(Me!txtDate))" & a & b & "
strPathWord = CurrentProject.Path & "\Archive\Задание.doc"
'strPathWord = CurrentProject.Path & "\Archive" & DatePart(Year, Me!txtDate) & "" & a & b & "\Задание.doc"
End Sub
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12208 / 5051 / 812
Регистрация: 07.08.2010
Сообщений: 14,906
Записей в блоге: 4
09.04.2016, 19:30
почитайте тему
Автозаполнение шаблонов WORD
0
93 / 18 / 4
Регистрация: 15.04.2015
Сообщений: 282
10.04.2016, 12:02
не хочу плодить новую тему, поэтому спрошу тут.

а как поступать, при экспорте в ворд, если закладка в шаблоне повторяется несколько раз?
через "меню Вставка – Закладка" воспринимает только одну последнюю закладку.
а плодить миллион однотипных закладок, но под разными номерами - как то не охота....

Добавлено через 11 секунд
день добрый всем
)))

Добавлено через 1 минуту
какой тут секретик?
))
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12208 / 5051 / 812
Регистрация: 07.08.2010
Сообщений: 14,906
Записей в блоге: 4
10.04.2016, 13:31
я применяю не закладку фамилия, а замену (фамилия)
их может быть любое количества
0
93 / 18 / 4
Регистрация: 15.04.2015
Сообщений: 282
10.04.2016, 18:27
Цитата Сообщение от shanemac51 Посмотреть сообщение
я применяю не закладку фамилия, а замену (фамилия)
и это единственное лекарство?
это я к тому, что, типа, переделывать надо?
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12208 / 5051 / 812
Регистрация: 07.08.2010
Сообщений: 14,906
Записей в блоге: 4
10.04.2016, 19:26
кто-то любит закладки
я же применяю только замену
---
для этого формирую список замены --который соответствует полям формы
вставляю его в начало шаблона, для удобства расстановки в любое количество мест шаблона

список можно не удалять --особенно при отладке, достаточно сделать его невидимым(кнопочка в шрифтах)
0
93 / 18 / 4
Регистрация: 15.04.2015
Сообщений: 282
10.04.2016, 19:34
Цитата Сообщение от shanemac51 Посмотреть сообщение
я же применяю только замену
а моно маленький примерчик?
хоть какой то, чтоб разобраться....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2016, 19:34
Помогаю со студенческими работами здесь

Автозаполнение документа Word (при заполнении первого)
Подскажите, есть два документа ворд, заполняю первый и есть необходимость некоторые строки перенести во второй документ ворд (такая вот...

На оборотной стороне документа word в правой части документа, текст съезжает за границу документа
Добрый вечер. Есть код, который формирует документ из шаблона. И все вроде бы, но происходит что то непонятное. На оборотной стороне...

Автозаполнение реквизита документа
Здравствуйте, можно ли сделать так что бы при заполнении одного реквизита документа заполнялись 1,2... реквизита &quot;на основании&quot;...

Автозаполнение реквизитов документа из справочника
Имеется конфигурация, есть справочник &quot;АвтомобилиИМеханизмы&quot; и документ &quot;ПутевыеЛисты4П&quot;. В справочнике есть реквизиты...

Автозаполнение реквизита формы документа
Друзья нужна Ваша помощь..Самописная конфа, в документе Расходная Накладная имеются реквизиты: ДОГОВОР и КОНТРАГЕНТ. ДОГОВОР имеет тип...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru