Как с помощью RecordSet вставить таблицу из Access’a в Word?

JokDing
Дата: 05.12.2009 16:41:45
Как с помощью RecordSet вставить таблицу из Access’a в Word?
ILL HEAD
Дата: 05.12.2009 17:00:27
таблицу создают (добавляют) в документе и заполняют на основе объектной модели ворда
хоть из рекордсета хоть из массива ;)
Ф1 смотрел в ворде ? апликэйшын умееш создавать в коде и юзать в нем документ (или бд , в зависимости где инициируеш действие) ?
одним словом -- лехко :)
ILL HEAD
Дата: 05.12.2009 17:01:47
автор
Ф1
сначала зайди в вба редактор ворда
ILL HEAD
Дата: 05.12.2009 17:04:09
ILL HEAD
автор
Ф1
сначала зайди в вба редактор ворда
или подключи в референсах акцеса библиотеку ворда, тогда из акцеса виден хелп ворда
JokDing
Дата: 05.12.2009 18:08:00
А поподробней можно
JokDing
Дата: 05.12.2009 18:12:17
ILL HEAD
таблицу создают (добавляют) в документе и заполняют на основе объектной модели ворда
хоть из рекордсета хоть из массива ;)
Ф1 смотрел в ворде ? апликэйшын умееш создавать в коде и юзать в нем документ (или бд , в зависимости где инициируеш действие) ?
одним словом -- лехко :)


Когда создаешь таблицу нужно указать количество ячеек и столбцов, а если заранее неизвестно их количество, то, как быть?
отакота
Дата: 05.12.2009 18:19:10
JokDing
Когда создаешь таблицу нужно указать количество ячеек и столбцов, а если заранее неизвестно их количество, то, как быть?
а что значит заранее и почему неизвестно? вы же собираетесь в таблицу данные из Recordset'а писать, т.е вы таблицу создаете, имея некий Recordset с данными - его размерность однозначно определяется.

поясните.
GNM
Дата: 06.12.2009 11:27:18
Самый простой вариант решения:

Private Sub Кнопка4_Click()
  Dim rst As ADODB.Recordset
  Dim varData As String, fld As Variant
  Dim objWD As Word.Application                             [color=green]' Cсылка на MS Word[/color]
  Dim mytbl As Table
  
  Set rst = New ADODB.Recordset
  rst.Open "Клиенты", CurrentProject.Connection, adOpenStatic, adCmdText
  
  Set objWD = New Word.Application
  objWD.Visible = True
  objWD.Documents.Add                                          [color=green]' Добавление нового документа[/color]
       
    varData = rst.GetString()                                      [color=green]' Преобразование rst в строку varData[/color]
    With objWD.Selection
        .TypeText ("Данные о клиентах") & Chr(13) & Chr(13)             [color=green]' Вывод заголовка документа[/color]
        .InsertAfter varData                                                           [color=green]'  Вставка строки в документ[/color]
        ' Конвертирование строки в таблицу;  автозаполнение - по ширине текста
        Set mytbl = .ConvertToTable(wdSeparateByTabs, rst.RecordCount, rst.Fields.Count, wdAutoFitContent)
    End With
   With mytbl
      .Rows.Add(.Rows(1)).HeadingFormat = True         [color=green]' Добавление строки заголовка табл.[/color]
        For Each fld In rst.Fields
            i = i + 1
           .Cell(1, i).Range.Text = fld.Name                    [color=green]' Заполнение заголовка таблицы[/color]
        Next
       .AutoFormat wdTableFormatGrid1                       [color=green]' Автоформат таблицы[/color]
   End With
   
'    objWD.Quit
'    Set objWD = Nothing
 
End Sub
Если необходимо, сделайте дополнительное форматирование таблицы и текста.
GNM
Дата: 06.12.2009 11:30:23
Не обращайте внимания на ошибки оформления сообщения!