Categorias

Entendendo o método CreateObject no VBA

Até a versão 7.0 o Word utilizava o WordBasic, a partir da versão 8.0
(MSOFFICE 97) o WordBasic foi substituído pelo VBA (Visual Basic for Applications) , mas mantém o objeto
WordBasic apenas por questão de compatibilidade com as versões anteriores.

No VBA foi introduzida uma estrutura de objetos hierarquizada, e para programar em VBA é necessário conhecer esta estrutura. Apenas para ilustrar a diferença vou postar um exemplo parecido, onde leio de um banco de dados e insiro os dados no word
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!Address
sel.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