Como automatizar o Word com o Visual Basic para criar uma mala direta

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 285332
Sumário
Este artigo descreve como automatizar o Word para criar uma mala direta para uma fonte de dados externos. Este artigo também explica as diferenças de código entre acessar os dados com OLEDB, ODBC e intercâmbio dinâmico de dados (DDE).
Mais Informações

Métodos de acesso de dados

Para definir programaticamente uma fonte de dados de um documento de mala direta do Word, você primeiro chamar o método OpenDataSource de um objeto MailMerge . A sintaxe para o método OpenDataSource é da seguinte maneira:
<mailmergeobject>. OpenDataSource (Nome, formato, ConfirmConversions, ReadOnly, LinkToSource, AddToRecentFiles, PasswordDocument, [PasswordTemplate], [reverter], [WritePasswordDocument], WritePasswordTemplate, conexão, SQLStatement, SQLStatement1, OpenExclusive, [subtipo] )
Observação Para obter uma descrição completa de cada argumento, consulte a Ajuda on-line do Microsoft Word Visual Basic. De interesse principal para se conectar a uma fonte de dados externos são os argumentos nome , conexão e subtipo . Combinações diferentes desses três argumentos representam dados diferentes métodos de acesso para a mala direta.

Usando OLEDB

OLEDB é o método de acesso de dados recomendado. Para especificar OLEDB como o método de acesso a dados com OpenDataSource , fornece o argumento de nome com o caminho e o nome de arquivo para o banco de dados ou uma conexão de DataSource do Office (.odc). Se você fornecer um banco de dados para o argumento nome , Word usará automaticamente OLEDB se houver um OLEDB provedor instalado que suporta o formato de banco de dados.

exemplo
<MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _           SQLStatement:="SELECT * FROM [MyTable]"				
- ou -
<MailMergeObject>.OpenDataSource Name:="C:\MyDataSource.odc", _           SQLStatement:="SELECT * FROM [MyTable]"				
Word e outros aplicativos do Office usam o objeto de DataSource do Office (ODSO) para OLEDB acessar fontes de dados externas. ODSO é o único mecanismo pelo qual o Word pode acessar dados usando OLEDB para uma mala direta. ODSO requer que o argumento nome da OpenDataSource seja um caminho completo para um banco de dados ou um caminho completo para um arquivo ODC válido. ODSO ignora qualquer informação no argumento de conexão .

Usar o ODBC

Você pode usar o ODBC para mala direta para acessar dados para o qual um nome de fonte de dados (DSN) de usuário tiver sido configurado no sistema. Para especificar o ODBC como método de acesso a dados com OpenDataSource , fornece uma seqüência de caracteres vazia para o argumento nome , uma seqüência de conexão ODBC para o argumento Connection e wdMergeSubTypeWord2000 para o argumento de subtipo .

exemplo
<MailMergeObject>.OpenDataSource Name:= "", _     Connection:= "DSN=MySQLServerDSN;DATABASE=pubs;uid=sa;pwd=;", _     SQLStatement:= "Select au_id, au_lname, au_fname from authors", _     SubType:= wdMergeSubTypeWord2000				

Usando o DDE

Você pode usar DDE para acessar dados em bancos de dados do Microsoft Access ou pastas de trabalho do Microsoft Excel. Para especificar DDE como o método de acesso a dados com OpenDataSource , forneça o caminho e o nome de arquivo para o banco de dados ou a pasta de trabalho para o argumento nome e wdMergeSubTypeWord2000 para o argumento de subtipo .

exemplo
<MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _           SQLStatement:="SELECT * FROM [MyTable]", _           SubType:=wdMergeSubTypeWord2000				

Exemplo de automação

O código de exemplo a seguir cria e executa uma mala direta para cartas usando OLE DB (por meio de ODSO). A fonte de dados que é usado é o banco de dados do Access de exemplo Northwind.mdb. Se o Northwind não estiver instalada, inicie o Microsoft Access 2002 ou Microsoft Office Access 2003. No menu Ajuda , clique em Bancos de dados de exemplo e, em seguida, escolha dados de exemplo Northwind para instalar este recurso.

Para executar esse exemplo, execute essas etapas:
  1. Inicie um novo projeto Standard EXE no Visual Basic. Por padrão, é criado o Form1.
  2. No menu Project , clique em referências .
  3. Clique em Microsoft Word 2000 Object Library na lista de referências e, em seguida, clique em OK .

    Observação : para usar o objeto Microsoft Office Word 2003, adicione o Microsoft Word 11.0 Object Library na lista de referências e, em seguida, clique em OK .
  4. Adicione um controle CommandButton ao Form1.
  5. Adicione o código a seguir ao módulo de código para Form1.

    Observação Se for necessário, modifique o caminho para Northwind.mdb para corresponder à sua instalação do Office XP.
    Dim WithEvents oApp As Word.ApplicationPrivate Sub Form_Load()    'Start Word.    Set oApp = CreateObject("Word.Application")End SubPrivate Sub Command1_Click()    Dim oMainDoc As Word.Document    Dim oSel As Word.Selection    Dim sDBPath as String    'Start a new main document for the mail merge.    Set oMainDoc = oApp.Documents.Add    With oMainDoc.MailMerge        .MainDocumentType = wdFormLetters                'Set up the mail merge data source to Northwind.mdb.        sDBPath = "C:\Program Files\Microsoft Office\" & _                  "OfficeXP\Samples\Northwind.mdb"        .OpenDataSource Name:=sDBPath, _           SQLStatement:="SELECT * FROM [Customers]"                'Add the field codes to the document to create the form letter.        With .Fields            Set oSel = oApp.Selection            .Add oSel.Range, "CompanyName"            oSel.TypeParagraph            .Add oSel.Range, "Address"            oSel.TypeParagraph            .Add oSel.Range, "City"            oSel.TypeText ", "            .Add oSel.Range, "Country"            oSel.TypeParagraph            oSel.TypeParagraph            oSel.TypeText "Dear "            .Add oSel.Range, "ContactName"            oSel.TypeText ","            oSel.TypeParagraph            oSel.TypeParagraph            oSel.TypeText " This letter is to inform you..."            oSel.TypeParagraph            oSel.TypeParagraph            oSel.TypeText "Sincerely, [Your Name Here]"        End With    End With        'Perform the mail merge to a new document.    With oMainDoc        .MailMerge.Destination = wdSendToNewDocument        .MailMerge.Execute Pause:=False    End With       End SubPrivate Sub oApp_MailMergeAfterMerge(ByVal Doc As Word.Document, ByVal DocResult As Word.Document)    'When the mail merge is complete, 1) make Word visible,    '2) close the mail merge document leaving only the resulting document    'open and 3) display a message.    Doc.Close False    oApp.Visible = True    MsgBox "Mail Merge Complete: " & oApp.ActiveDocument.Name    End SubPrivate Sub Form_Unload(Cancel As Integer)    Set oApp = NothingEnd Sub					
  6. Pressione F5 para executar o programa.
  7. Clique no controle CommandButton no Form1 para executar a mala direta.
Quando o código for concluído, o Word é tornado visível com um novo documento aberto. O novo documento contém cartas que resultam de uma mala direta que contém dados que são extraídos da tabela Customers em Northwind.mdb.
Referências
Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
289830Solicitar para selecionar a tabela com código de mala direta do Word 2002 para fonte de dados do Excel ou Access
279462Solicitado a selecionar uma fonte de dados ao automatizar o Word 2002 mala
285333Demonstração de código de evento do Word 2002 MailMerge
285176Como automatizar o Word para executar uma mala direta do cliente usando o XML do SQL Server
220607Como automatizar o Microsoft Word para criar mala direta a partir do Visual Basic
Abrir fonte de dados dados fonte de mala direta ado oledb ole db WD2003 WD2007

Propriedades

ID do Artigo: 285332 - Última Revisão: 05/14/2007 23:26:01 - Revisão: 7.2

Microsoft Office Word 2007, Microsoft Office Word 2003, Microsoft Word 2002 Standard Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbmt kbautomation kbhowto KB285332 KbMtpt
Comentários