Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Access -> Word  [new]
Bolt
Member

Откуда:
Сообщений: 30
Попросили меня сделать экспорт данных формы в документ Word. Т.е существует готовая болванка документа и нужно в определенные места текста занести значения полей формы. Возможно ли это ?
Всем спасибо.
8 окт 04, 19:48    [1020687]     Ответить | Цитировать Сообщить модератору
 Re: Access -> Word  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 928
Конечно, поищи поиском по форуму, много раз обсуждался этот вопрос.
8 окт 04, 21:44    [1020870]     Ответить | Цитировать Сообщить модератору
 Re: Access -> Word  [new]
Geo
Member

Откуда:
Сообщений: 6883
Чичас, гляну...

Вот обрезки:

  Dim WordApp as object
  Dim Range

блаблабла    ' Если файл есть
    Set WordApp = CreateObject("Word.Application")
  
    WordApp.Application.Documents.Open GetMainValue("ДирГотПредл") & блабла & ".doc"
  
    Set Range = WordApp.Application.ActiveDocument.Range

    Range.Find.Execute findtext:="%Receiver%", ReplaceWith:=Nz(Me.Контра.Column(5), ""), Replace:=wdReplaceAll
   аналогичные действия
  
    Document.Save
    Set Range = Nothing
    Set WordApp = Nothing
8 окт 04, 21:52    [1020878]     Ответить | Цитировать Сообщить модератору
 Re: Access -> Word  [new]
vma_mnt
Member

Откуда: Новокузнецк
Сообщений: 602
Geo
Чичас, гляну...

Вот обрезки:

  Dim WordApp as object
  Dim Range

блаблабла    ' Если файл есть
    Set WordApp = CreateObject("Word.Application")
  
    WordApp.Application.Documents.Open GetMainValue("ДирГотПредл") & блабла & ".doc"
  
    Set Range = WordApp.Application.ActiveDocument.Range

    Range.Find.Execute findtext:="%Receiver%", ReplaceWith:=Nz(Me.Контра.Column(5), ""), Replace:=wdReplaceAll
   аналогичные действия
  
    Document.Save
    Set Range = Nothing
    Set WordApp = Nothing



Открываешь Word, включаешь запись макроса, что-то делаешь, копируешь макрос вместо аналогичных действий, правишь ручками и все.
9 окт 04, 04:16    [1021162]     Ответить | Цитировать Сообщить модератору
 Re: Access -> Word  [new]
Bolt
Member

Откуда:
Сообщений: 30
Убил кучу времени на реализацию совета - НИЧЕГО !
Office XP
Может кто объяснить где ошибка ?

Private Sub butWordReport_Click()
Dim WordApp As Object
Dim myRange
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True 'Word виден
WordApp.Application.Documents.Open ("C:\s" & ".doc") 'открыли файл "c:\s.doc"
' файл "s.doc" содержит одно слово - "Microsoft"
' загружаем рабочую область
Set myRange = WordApp.Application.ActiveDocument.Range

'Запускаем поиск и безрезультатно пытаемся заменить
' слово "Microsoft" на "g"
myRange.Find.Execute FindText:="Microsoft", ReplaceWith:="hello", _
Replace:=wdReplaceAll
If myRange.Find.Found = True Then
myRange.select 'если нашли текст, то выделяется найденное
'на самом деле выделяется, но замены нет!
Selection.TypeText Text:="g" 'пытаемся заместить найденное буквой "g"
'Вылетает ошибка "Object Required"
End If
WordApp.Application.Documents.Save
WordApp.Application.Documents.Close ' если не закрыть документ,
Set Range = Nothing 'при повторном открытии будет ошибка
Set WordApp = Nothing
End Sub
12 окт 04, 10:18    [1025503]     Ответить | Цитировать Сообщить модератору
 Re: Access -> Word  [new]
Вариант
Guest
Вариант (вставка через закладки, одноименные полям набора данных)
Function WordPutFrRstByName(wrD As Object, rst As Recordset, Optional sSuf As String, Optional SetNull As Boolean) As Boolean    'wrD As  Word.Document 'Object
'wrD As Word.Document , Rst - текущая запись
Dim wrdR As Object  'Word.Range '
Dim sName As String, i   As Long
    If Not (rst.EOF And rst.BOF) Then
        On Error Resume Next
        For i = 0 To rst.Fields.Count - 1
            sName = rst.Fields(i).Name
            If (SetNull) And IsNull(rst.Fields(i)) Then
                'пропускаем публикацию Null (оставляем "по умолчанию)
            Else
                Set wrdR = wrD.Bookmarks(sName & sSuf).Range
                If Not wrdR Is Nothing Then
                    wrdR.Text = rst.Fields(i) 'wrdR
                    wrD.Bookmarks.Add (sName & sSuf), wrdR 'просто вставка затирает закладки
                    
                    'wrD.CustomDocumentProperties.Add sName & sSuf, 1, 1, 1, sName & sSuf ' как связь
                    'Add(Name As String, LinkToContent As Boolean, [Type], [Value], [LinkSource])
                    'вставляем св-ва:
                    'wrD.CustomDocumentProperties.Add sName & sSuf, False, FieldTypeTo_CustPropType(rst.Fields(i).TYPE), rst.Fields(i)   ', sName & sSuf
                End If
            End If
            Set wrdR = Nothing 'чтобы не вставлять при ошибках в старые
        Next i
        wrD.Fields.Update 'Source
        wrD.UndoClear
    End If
    WordPutFrRstByName = True
End Function
12 окт 04, 11:27    [1025816]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить