 VBA -
Criando uma tabela no Word com dados de  um Recordset
 VBA -
Criando uma tabela no Word com dados de  um Recordset
Mais uma vez voltamos a abordar a geração de
documentos no Word via VBA. Nos artigos - OLE - Conceitos
e Criando Relatórios com o Word já falamos sobre o
assunto , mas, como sempre há algo novo a aprender vamos mostrar nesta dica
como gerar uma tabela no Word com os dados de um banco de dados
access.  
O código usado no projeto somente irá
funcionar a partir da versão do Word 97 , quando definitivamente o Word passou
suportar um modelo de objetos completo.
Como Funciona
  - Vamos fornecer o caminho e o nome do banco
    de dados
- O nome da tabela
- Através de uma instrução SQL selecionar
    alguns registros da tabela
- Exportar os registros selecionados para o
    Word gerando uma tabela de 2 colunas
Para o exemplo usamos o banco de dados Biblio.mdb
e a tabela Publishers de onde selecionamos todos os registros cujo
estado(State) for igual a MA :
"select * from " & txttabela.Text & " where State =
'MA'"
O resto o VBA faz ...
O Projeto:
  - Inicie um novo projeto STANDARD EXE  no
    VB
- Faça uma referência a Microsoft Word x.0
    object library
- Faça uma referência a Microsoft DAO 3.X
    object Library
- No formulário padrão insira os controles
    como na figura abaixo:
  
    |  | -Duas
      caixas de texto - txtbd e txttabela -Três Labels -Um botão de comando - cmdexport   | 
  
    | A seguir insira o
      seguinte código no formulário: | 
  
    | Option Explicit
 ' Referencias => DAO 3.X
 ' Referencias => Microsoft Word 8.0 Object Library
 
 Private WordApp As Word.Application
 Private doc As Word.Document
 Private sel As Word.Selection
 
 Private db As Database
 Private rs As Recordset
 
 Private Sub cmdExport_Click()
 
 If txtbd.Text <> "" And txttabela.Text <> "" Then
 
 Dim i As Integer
 Set db = OpenDatabase(txtbd.Text)
 Set rs = db.OpenRecordset("select * from " & txttabela.Text & " where State = 'MA'")
 
 Set WordApp = New Word.Application
 
 lblStatus.Visible = True
 
 On Error Resume Next
 WordApp.Documents.Add
 Set doc = WordApp.ActiveDocument
 Set sel = WordApp.Selection
 
 'define o número de colunas da tabela
  
      doc.Tables.Add Range:=sel.Range, NumRows:=1, NumColumns:=2
 i = 0
 Do Until rs.EOF
 lblStatus.Caption = "Registros Exportados : " & i
 
 sel.TypeText Text:=rs!Name
 sel.MoveRight unit:=12                
      ' 12 = proxima celula
   sel.TypeText Text:=rs!Addresssel.MoveRight unit:=12
 
 
 rs.MoveNext
 DoEvents
 
 i = i + 1
 
 Loop
 
 lblStatus.Caption = "Registros Exportados : " & i
 WordApp.Visible = True
 
 Set WordApp = Nothing
 Else
 MsgBox "Informe um Caminho/Nome valido para o Banco de dados/Tabela ! "
 End If
 End Sub
 | 
Neste exemplo estamos exportando somente os
campos - Name e Address da tabela Publishers. Você pode incrementar o
projeto até o limite da sua imaginação...
Abaixo a tabela gerada no Word para o nosso
exemplo:

Tchau.... 