Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / печать данных из Access в Word (OLE) / 1 сообщений из 1, страница 1 из 1
18.04.2006, 14:43:58
    #33673712
Matroz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
печать данных из Access в Word (OLE)
Office2000. База в Access.
Требуется создать нетабличный (одна запись) отчет (бланк договора на 2 стр.). Заготовка предоставлена в Word. Решение, сохранив форматирование, добавить текст. поля, дать им закладки (совпадающие с именами полей запроса), включить защиту "Только ввод данных в поля форм" и сохранить это в виде шаблона. Затем из Access создать ворд док. с этим шаблоном и заполнить поля.Рисовать этот бланк в Access - гемор. Вот код
для заполнения полей
Код: plaintext
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.
Sub AddDataToWordField(Doc As Word.Document, FieldBookmark As String, Data As String)
    Dim rng As Word.Range
    For i =  1  To Doc.Fields.Count
        Set rng = Doc.Fields(i).Result
        If rng.Bookmarks( 1 ) = FieldBookmark Then
            rng.Text = Data
            i = Doc.Fields.Count
        End If
    Next
End Sub

Sub PrintDogovor(DogovorID As Integer)
    Dim oWord As Word.Application
    Dim oDoc As Word.Document
  ...
    Set oDoc = oWord.Documents.Add(Template:=CurrentProject.Path + "\" + "договор.dot", NewTemplate:=False, DocumentType:= 0 )
...
    Dim rst As ADODB.Recordset
    Set rst = cmd.Execute
    
    oDoc.Unprotect ""
    If Not (rst.EOF Or rst.BOF) Then
        For i =  0  To rst.Fields.Count -  1 
            If Not IsNull(rst.Fields(i)) Then
                AddDataToWordField oDoc, rst.Fields(i).name, CStr(rst.Fields(i).Value)
            End If
        Next
    End If
...
    oDoc.Protect wdAllowOnlyFormFields, True, ""
End Sub

оставил только основное
Вопрос по Word.
Почему мне приходится снимать защиту /oDoc.Unprotect ""/ перед печатью данных?
Если не снять, то ругань по поводу rng.Text = Data, что-то типа "не могу использовать это свойство в защищенном режиме". Но ведь я руками могу вводить текст в поля ИМЕННО В ЗАЩИЩЕННОМ РЕЖИМЕ. А если снять, то надо обратно ставить oDoc.Protect wdAllowOnlyFormFields, True, "".
или rng.Text = Data - не наш метод? Непнятно
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / печать данных из Access в Word (OLE) / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]