powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / и еще раз Word :)))
16 сообщений из 16, страница 1 из 1
и еще раз Word :)))
    #32262074
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди добрые!!!
Можно ли из Access открыть сразу документ с результатами слияния без открытия основного документа?
Пользователям ну не нравится много кнопок нажимать, они путаются или :(((
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262635
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж!!!
Либо вопрос опять глупый задала либо у всех пользователи - "опытные"
И еще тогда на засыпку (меня, наверное ) вопросик
почему иногда (но далеко не всегда!!!) при слияниии способом с использованием ODBC и представления не возможно открыть источник данных, а с использованием DDE без проблем.
не могу выловить причину :(((
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262649
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо вопрос опять глупый задала либо у всех пользователи - "опытные"
Либо мало кто слияниями занимался.
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262658
Я занимался созданием отчетов через MSWord напрямую из VBA.
Если хочешь - могу дать подпрограмму для него.
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262674
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочешь!!!!
Спасибо огромное, хоть от кого-то доброе слово увидела, ДАВАЙ!!!
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262727
Вот функция:

Код: 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.
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.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
Function WordOutput(FilePath As String, _
                    strSQL As String, _
                    strWhere As String, _
                    Mode As Byte) As String
' Подпрограмма предназначена для экспорта информации из запроса
' в отчет. Условие одно, запрос должен содержать ровно одну запись
' Все остальные варианты отвергаются
' Параметры: FilePath - путь к файлу шаблона
'            strSQL - имя внешнего запроса или сам SQL запрос
'            strWhere - Параметры для выборки
'            Mode - Вывода результатов:
'                    1  - предварительный просмотр
'                   2 - печать
' Выход: результат операции или при сохранении на диске - имя файла
'
    Dim wrdObj As Object
    Dim rst As New ADODB.Recordset
    Dim fld As ADODB.Field
    Dim Source As String
    Dim Pole As String
    Dim i As Integer
    If Right(FilePath, 5) = "\.dot" Then Exit Function
    On Error Resume Next
    ' Проверка на присутствие данных
    If Len(Trim(FilePath)) =  0  Then Exit Function
    If Len(Trim(strSQL)) =  0  Then Exit Function
    ' Открытие объекта - Microsoft Word (любой версии)
    Set wrdObj = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Err.Clear
        Set wrdObj = CreateObject("Word.Application")
    End If
    wrdObj.Visible = False
    ' Открытие шаблона документа и проверка на его присутствие
    wrdObj.Documents.Add FilePath
    If Err.Number <>  0  Then
        Err.Clear
        MsgBox  "Отсутствует файл шаблона документа,"  & vbCrLf & _
               FilePath, vbCritical + vbOKOnly,  "Ошибка" 
        wrdObj.Quit
        Set wrdObj = Nothing
        Exit Function
    End If
    ' Открытие данных и проверка на их присутствие
    If Len(Trim(strWhere)) = 0 Then
        rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    Else
        rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
        rst.Filter = strWhere
        If Err.Number <> 0 Then
            Err.Clear
            MsgBox "Неправильно задана выборка", vbCritical + vbOKOnly, "Ошибка"
            wrdObj.Quit
            Set wrdObj = Nothing
            Exit Function
        End If
        If rst.RecordCount Then
            rst.MoveLast
        Else
            MsgBox "Ни одна запись не удовлетворяет условию выборки", _
                   vbCritical + vbOKOnly, "Ошибка"
            wrdObj.Quit
            Set wrdObj = Nothing
            Exit Function
        End If
    End If
    ' Перебор полей (с предварительной проверкой на присутствие меток в док-те)
    With wrdObj.ActiveDocument.Bookmarks
        i =  1 
        Do Until .Count =  0 
            Pole = Trim(.Item(i).Name)
            ' Заполнение полей, если они присутствуют в запросе
            .Item(i).Range.Text = CStr(rst.Fields(Trim(Pole)).Value) & ""
            ' Заметает следы своей деятельности в документе
            .Item(i).Delete
        Loop
    End With
    ' Обработка "Спецзнаков"
    For Each fld In rst.Fields
        With wrdObj.ActiveWindow.Selection.Find
            .Text = "[" & fld.Name & "]"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = 1
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        If wrdObj.ActiveWindow.Selection.Find.Execute Then
            wrdObj.ActiveWindow.Application.Keyboard (1049)
            If Len(Str(rst.Fields(fld.Name).Value)) > 0 Then
                wrdObj.ActiveWindow.Selection.TypeText Text:=rst.Fields(fld.Name).Value & ""
            Else
                wrdObj.ActiveWindow.Selection.TypeText Text:=" "
            End If
        End If
        With wrdObj.ActiveWindow.Selection.Find
            .Text = "[" & fld.Name & "]"
            .Replacement.Text = rst.Fields(fld.Name).Value & ""
            .Forward = True
            .Wrap = 1
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        wrdObj.ActiveWindow.Selection.Find.Execute Replace:=2 'wdReplaceAll
    Next
    rst.Close
    Select Case Nz(Mode,  1 )
        Case  1 
            ' Предварительный просмотр
            wrdObj.Visible = True
            wrdObj.SetFocus
        Case 2
            ' Печать на текущий принтер
            wrdObj.ActiveDocument.PrintOut
            wrdObj.ActiveDocument.Close ( 0 )
            MsgBox  "Печать закончена" , vbInformation + vbOKOnly
    End Select
    Set rst = Nothing
    Set wrdObj = Nothing
End Function


Теперь как ей пользоваться:
1. Создаешь запрос, из которого будут выводиться данные
2. Создаешь шаблон в программе Microsoft Word
Метки, куда будут вставляться данные бывают двух типов:
a. Закладки (с уникальными именами, соответствующими полям запроса)
Недостаток - конкретное поле из запроса можно вставить только один раз
б. Метки (пример: [Familiya], [Imya], [BirthDay])
Недостаток - возможны искажения вставки значений полей объемом более 4 кбайт

P.S.: Никаких библиотек дополнительно подключать не надо. Функция работает с данными через ADO. Функция взята из рабочего проекта. Приношу извинения за возможные неоптимальные решения некоторых возможностей функции.
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262787
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК!!!
Пошла пользоваться...
ОООгромное спасибо!!!!
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262883
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, поспешила :(((
во-первых у меня гораздо больше одной записи, более того, они подчиненные, т.е. под одним заголовком несколько, да и самих заголовков не один :(((
или я чет не поняла? :(((
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262889
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторюсь
word_lib2000.mdb
http://msa.polarcom.ru/downloads.htm
посмотри должна подойти
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262905
Alex_Juice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://msa.polarcom.ru/downloads.htm
А там разве есть возможности работать с подчиненными?
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262909
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там просто строится документ ворда.
с табличками...
и такого понятия как подчиненный нет.
в принципе "подчиненный " и не надо .
последовательное построенние документа ...
есть плюсы есть минусы...
можно совместить вариант с шаблоном и с построением - это кому как нравится.
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262918
Alex_Juice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
там просто строится документ ворда.
с табличками...
С одной табличкой...
Кстати, автора я знаю - меня взяли на его место на нынешней работе...
В его произведениях обычно трудно разобраться :) (впрочем, у каждого свои тараканы)
Но лично я обычно делаю по-другому: сначала вручную оформляю нужный шаблон (если нужно, с несколькими таблицами), потом ставлю закладки где нужно, а дальше процедурой ввожу текст (для таблиц есть своя, так что их можно в одном документе наставить сколько угодно - сначала переходишь на закладку в начале таблицы, затем заполняешь строки, а когда нужно - переходишь к другой таблице).
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262919
Alex_Juice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
там просто строится документ ворда.
с табличками...
С одной табличкой...
Кстати, автора я знаю - меня взяли на его место на нынешней работе...
В его произведениях обычно трудно разобраться :) (впрочем, у каждого свои тараканы)
Но лично я обычно делаю по-другому: сначала вручную оформляю нужный шаблон (если нужно, с несколькими таблицами), потом ставлю закладки где нужно, а дальше процедурой ввожу текст (для таблиц есть своя, так что их можно в одном документе наставить сколько угодно - сначала переходишь на закладку в начале таблицы, затем заполняешь строки, а когда нужно - переходишь к другой таблице).
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262935
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тесен мир...
вариантов построения "отчетов" в ворде хватает, нада только выбрать тот который пнравится. пусть не самый-самый . главное делать в нем то что требуется быстро и красиво.
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262952
Alex_Juice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нада только выбрать
или самому написать
...
Рейтинг: 0 / 0
и еще раз Word :)))
    #32262956
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выбираешь вариант (по шаблону или еще как)

и ручками, ручками...

профи выбирают особей противоположного пола, чтоб не ручками баловаться....
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / и еще раз Word :)))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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