Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
1

Сохранение заполненного шаблона word данными из access

18.09.2014, 12:49. Показов 1911. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Пользуюсь кодом автоматического заполнения шаблона word данными их формы и из запроса методом поиска и замены, а так же с помощью закладки (объединённый метод).

На кнопке висит:

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
Private Sub pasport2_Click()
If Me!spisok1 = 0 Then
MsgBox "Не выбран номер обращения в списке!"
Exit Sub
End If
''On Error GoTo Err_pasport1_Click
Err.Number = 0
On Error GoTo notloaded
Set app = GetObject(, "Word.Application")
notloaded:
If Err.Number = 429 Then
Err.Clear
Set app = CreateObject("Word.Application")
theError = Err.Number
End If
app.Visible = True
On Error GoTo Err_pasport2_Click
With app
Set myDoc = .Documents.Add("c:\Gens\dot\Паспорт_2.dot")
Set MyRange = myDoc.Content
MyRange.Find.Execute FindText:="%Номер_образца%", ReplaceWith:=Format(Me!spisok1.Column(3)), Replace:=wdReplaceAll
MyRange.Find.Execute FindText:="%ФИО%", ReplaceWith:=Format(Me!spisok1.Column(1)), Replace:=wdReplaceAll
MyRange.Find.Execute FindText:="%дата_завершения_выделения%", ReplaceWith:=Format(Me!spisok1.Column(23)), Replace:=wdReplaceAll
End With
Call funOutputTableWordQuery3(strPathDot, strPathWord)
Exit_pasport2_Click:
Exit Sub
Err_pasport2_Click:
MsgBox Err.Description
Resume Exit_pasport2_Click
End Sub
а это функция, вызываемая кнопкой:


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
Function funOutputTableWordQuery3(strPathDot As String, strPathWord As String) As Boolean  'функция для заполнения таблицы шаблона ворд из запроса
'On Error GoTo Err_
Dim i_ As Long
i_ = 0
Set dbs = CurrentDb()
Debug.Print dbs.Name
s1 = dbs.QueryDefs("zzz2").SQL
Debug.Print s1
s1 = Replace(s1, "[код обращения]", Me!spisok1)
Debug.Print s1
 
'select * from
Set rst = dbs.OpenRecordset(s1) 'открываем запрос для перебора столбцов
 
rst.MoveLast 'переходим в конец набора строк - тем самым они гарантированно загружаются в переменную rstTable
CountRec = rst.RecordCount 'определяем число строк в запросе
'MsgBox CountRec
With app.ActiveWindow.Selection 'ставим фокус на текущее окно
If CountRec > 0 Then 'смотрим, чтоб не пустой запрос
'rst.MoveLast 'переходим в конец набора строк - тем самым они гарантированно загружаются в переменную rstTable
 rst.MoveFirst 'возращаемся в начало набора строк
If TrueBookmark("NZ", .Document) Then 'если есть закладка в вордовском шаблоне NZ
 .GoTo What:=wdGoToBookmark, Name:="NZ" 'Перейти на закладку NZ - начало втыкания данных в таблицу
End If
 'запоминаем номер строки таблицы где стоит начальная закладка
j = .Information(wdEndOfRangeRowNumber)
 'If CountRec > 1 Then
 'Вставим необходимое количество строк
'.InsertRowsBelow CountRec - 1 '########################################################################
' End If
 'Заполняем таблицу данными из запроса
NumStr = 1
 Do While Not rst.EOF 'Запускаем цикл перебора столбцов запроса
For i = 0 To rst.Fields.Count - 1
 'MsgBox (rst.Fields(i).Name)
 If rst.Fields(i).Name = "NumStr" Then 'если в запросе будет столбец с именем NumStr - то вместо него в ячейку таблицы встанет порядковый номер записи
.Tables(1).Cell(j, i + 1).Range = NumStr
 
 Else
 'Заполняем таблицу по координатам: номер столбца, номер строки
.Tables(1).Cell(j, i + 4).Range = Nz(rst.Fields(i), "")
 
 End If
 
 Next i
 
 i_ = i_ + 1
 If CountRec = i_ Then
 rst.Close
 GoTo hare
 End If
 
 rst.MoveNext 'переходим на следующую запись
NumStr = NumStr + 1 'увеличиваем номер по порядку
 
j = j + 1 'увеличиваем номер координаты ячейки (номер столбца)
 
Loop
 
 End If
 rst.Close 'закрываем рекордсет - при этом автоматически уничтожается и перенменная rstTable
 End With
 
hare:
 funOutputTableWordQuery3 = True 'ставим флаг успешного выполнения функции
Exit_:
 Exit Function
Err_:
 funOutputTableWordQuery3 = False
 Err.Clear
 Resume Exit_
End Function
Прошу помощи вот в чём: как сохранить автоматически файл в определённой папке с определённым именем, где имя - из поля на форме?
Помогите, пожалуйста.
.SaveAs не помогло. Или я не разобрался...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2014, 12:49
Ответы с готовыми решениями:

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

Сохранение и закрытие шаблона Excel после внесения данных из формы Access
День добрый. По нажатию кнопки происходит открытие шаблона Excel c последующим его заполнением...

Защита шаблона, снятие и установка защиты в word, через Access
Добрый день Возникла следующая проблема, надеюсь вы помежете своим богатым опытом и знаниями. ...

Заполнение таблицы Word с закладкой данными из запроса Access - ищу решение
Здравствуйте, люди добрые ! Где-то на просторах интернета нашел работающий пример заполнения...

13
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
18.09.2014, 12:57 2
.SaveAs не помогло. Или я не разобрался...
а где оно------------не нашла
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
18.09.2014, 12:59  [ТС] 3
shanemac51,

так его так изначально и не было.
Я пробовал добавить, но не работало. Поэтому решил, что лучшее вообще убрать, а люди знающие точно подскажут что да как.
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
18.09.2014, 12:59 4
Call funOutputTableWordQuery3(strPathDot, strPathWord)
где присвоены значенич
--strPathDot
--strPathWord
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
18.09.2014, 13:00  [ТС] 5
shanemac51,

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Compare Database
'Option Explicit
Dim d1 As Date
Dim il As Long
Dim appWD As Word.Application
Dim MyRange As Variant
Dim app As Word.Application, strPathDot As String, strPathWord As String
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim que As DAO.QueryDef
Dim i As Long, j As Long, NumStr As Long, s1
Dim CountRec As Long
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
18.09.2014, 13:07 6
strPathDot As String, strPathWord As String
это объявлены, а где им присвоено значение

Visual Basic
1
2
strPathDot="c:\Gens\dot\Паспорт_2.dot"
strPathWord .................................
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
18.09.2014, 13:18  [ТС] 7
shanemac51,

strPathWord
видимо лишнее, потому что много раз всё переделывалось... осталось, видимо, со старых времён
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
18.09.2014, 14:36 8
тогда я не нашла, где вы присваиваете имя создаваемому файлу
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
18.09.2014, 22:00  [ТС] 9
shanemac51, так я и не присваиваю. И не знаю как это делать. В этом и мой вопрос - как сохранить и как присвоить?
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
19.09.2014, 00:32 10
Цитата Сообщение от autumnrustle Посмотреть сообщение
мой вопрос - как сохранить и как присвоить?
Это несложно. Ключевое слово SaveAs. Метод SaveAs это метод объекта Document. Поскольку Вы работаете с одним документом и его же сохраняете, то Document это ActiveDocument - активный документ:
Visual Basic
1
2
3
Dim strPathWord
strPathWord="c:\Gens\Паспорт_2.doc"  'или .docx. Это уж как требуется 
ActiveDocument.SaveAs strPathWord
0
16 / 1 / 0
Регистрация: 01.08.2013
Сообщений: 121
Записей в блоге: 1
19.09.2014, 00:33  [ТС] 11
mobile, доходчиво) спасибо)
а как сохранить под именем из поля на форме активной?
0
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 329
23.09.2014, 09:02 12
Цитата Сообщение от autumnrustle Посмотреть сообщение
а как сохранить под именем из поля на форме активной?
меня этотоже интересует
0
Модератор
Эксперт MS Access
11960 / 4828 / 779
Регистрация: 07.08.2010
Сообщений: 14,138
Записей в блоге: 4
23.09.2014, 10:01 13
Visual Basic
1
2
strPathWord="c:\Gens\" & me.fio & "_" & me.data_rojd & ".doc"  'или .docx. Это уж как требуется 
ActiveDocument.SaveAs strPathWord
1
114 / 4 / 0
Регистрация: 07.09.2014
Сообщений: 329
23.09.2014, 10:29 14
у меня не работает запрос на сохранение, а сразу сохраняет под именем "Документ1.doc"
Visual Basic
1
2
strPathWord = CurrentProject.Path & Me.Краткое_наименование & ".doc"
ActiveDocument.SaveAs strPathWord
0
23.09.2014, 10:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2014, 10:29
Помогаю со студенческими работами здесь

Заполнение данными шаблона Word
Здравствуйте. Буду писать программку, которая будет создавать Word файл из шаблона , и вносить в...

Как лучше всего сделать сохранение >100 страниц из word шаблона с заменой ключ. слов в один word файл для посл. печати?
Я вот думаю, как? Точнее не думаю, я уже приступлю к созданию всего этого завтра, но хотел бы...

Программно заполнить бланк Word-шаблона данными из TextBox
Привет всем!!!! Подскажите пожалуйста, как осуществить задуманное: На форме имеется ListBox с...

Сохранение документа из шаблона MS Word
Есть шаблон MS Word shablon.docx Есть форма с несколькими TextBox и Button При нажатии на кнопку...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru