Cómo automatizar Word con Visual Basic para crear una combinación de correspondencia

Seleccione idioma Seleccione idioma
Id. de artículo: 285332 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Se explica cómo automatizar Word para crear una combinación de correspondencia para un origen de datos externo. En este artículo también se explica las diferencias de código de acceso a los datos con OLEDB, ODBC y el intercambio dinámico de datos (DDE).

Más información

Métodos de acceso a datos

Para configurar un origen de datos de un documento de combinación de correspondencia de Word mediante programación, primero llame al método OpenDataSource de un objeto MailMerge . La sintaxis del método OpenDataSource es como sigue:
<mailmergeobject>. OpenDataSource (Nombre, [formato] [ConfirmConversions], [ReadOnly], [LinkToSource], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [revertir], [WritePasswordDocument], [WritePasswordTemplate], [conexión], [SQLStatement], [SQLStatement1], [OpenExclusive], [SubType] )
Nota Para obtener una descripción completa de cada argumento, consulte la Ayuda en pantalla de Visual Basic de Microsoft Word. Son los argumentos nombre , conexión y subtipo de interés principal para conectarse a un origen de datos externos. Diferentes combinaciones de estos tres argumentos representan datos distintos métodos de acceso para la combinación de correspondencia.

Mediante OLEDB

OLEDB es el método de acceso de datos recomendado. Para especificar OLEDB como el método de acceso a datos con OpenDataSource , proporcione el argumento nombre con la ruta de acceso y el nombre de archivo a la base de datos o una conexión de origen de datos de Office (.odc). Si proporciona una base de datos para el argumento Name , Word utilizará automáticamente OLEDB si hay un OLEDB proveedor instalado que admita el formato de base de datos.

ejemplo
<MailMergeObject>.OpenDataSource Name:="C:\MyDB.mdb", _
           SQLStatement:="SELECT * FROM [MyTable]"
				
-o bien -
<MailMergeObject>.OpenDataSource Name:="C:\MyDataSource.odc", _
           SQLStatement:="SELECT * FROM [MyTable]"
				
Word y otras aplicaciones de Office XP utilizan Office DataSource Object (ODSO) para tener acceso OLEDB a orígenes de datos externos. ODSO es el único mecanismo que Word tener acceso a datos mediante OLEDB para una combinación de correspondencia. ODSO requiere que el argumento nombre de OpenDataSource una completa ruta de acceso a una base de datos o una ruta de acceso completa de un archivo ODC válido. ODSO omite cualquier información en el argumento Connection .

Utilizar ODBC

Puede utilizar ODBC para tener acceso a datos para el que un nombre de origen de datos (DSN) de usuario se ha configurado en el sistema la combinación de correspondencia. Para especificar ODBC como el método de acceso a datos con OpenDataSource , proporcionar una cadena vacía para el argumento Name , una cadena de conexión de ODBC para el argumento Connection y wdMergeSubTypeWord2000 para el argumento de SubType .

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

Utilizando DDE

Puede utilizar DDE para datos de acceso en las bases de datos de Microsoft Access o libros de Microsoft Excel. Para especificar DDE como método de acceso a datos con OpenDataSource , indique la ruta de acceso y el nombre de archivo a la base de datos o el libro para el argumento de nombre y wdMergeSubTypeWord2000 para el argumento de SubType .

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

Ejemplo de automatización

El código de ejemplo siguiente crea y ejecuta una combinación de correspondencia las cartas de formulario mediante OLEDB (por medio de ODSO). El origen de datos que se utiliza es la base de datos de Access de ejemplo Neptuno.mdb. Si Northwind no está instalado, inicie Microsoft Access 2002 o Microsoft Office Access 2003. En el menú Ayuda , haga clic en Bases de datos de ejemplo y, a continuación, elija base de datos para instalar esta característica.

Para ejecutar este ejemplo, siga estos pasos:
  1. Inicie un nuevo proyecto EXE estándar en Visual Basic. De forma predeterminada, se crea Form1.
  2. En el menú proyecto , haga clic en referencias .
  3. Haga clic en Biblioteca de objetos de Microsoft Word 2000 en la lista de referencias y, a continuación, haga clic en Aceptar .

    Nota : para utilizar el objeto de Microsoft Office Word 2003, agregue la biblioteca de objetos de Microsoft Word 11.0 en la lista de referencias y haga clic en Aceptar .
  4. Agregue un control CommandButton a Form1.
  5. Agregue el código siguiente al módulo de código para Form1.

    Nota Si es necesario, modifique la ruta de acceso Neptuno.mdb para que coincida con la instalación de Office XP.
    Dim WithEvents oApp As Word.Application
    
    Private Sub Form_Load()
        'Start Word.
        Set oApp = CreateObject("Word.Application")
    End Sub
    
    Private 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 Sub
    
    Private 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 Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        Set oApp = Nothing
    End Sub
    					
  6. Presione F5 para ejecutar el programa.
  7. Haga clic en el control CommandButton en Form1 para realizar la combinación de correspondencia.
Cuando se completa el código, Word se realiza visible con un nuevo documento abierto. El nuevo documento contiene cartas derivados de una combinación de correspondencia que se extraen de la tabla Customers de Neptuno.mdb contiene datos.

Referencias

Para obtener más información, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
289830Preguntar si se selecciona tabla con código de la combinación de correspondencia de Word 2002 para origen de datos de Excel o Access
279462Le pide que seleccione un origen de datos al automatizar la combinación de correspondencia de Word 2002
285333Demostración de código de evento de combinación de correspondencia de Word 2002
285176Cómo automatizar Word para realizar una combinación de correo de cliente mediante XML de SQL Server
220607Cómo automatizar Microsoft Word para realizar la combinación de correspondencia desde Visual Basic

Propiedades

Id. de artículo: 285332 - Última revisión: lunes, 14 de mayo de 2007 - Versión: 7.2
La información de este artículo se refiere a:
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Palabras clave: 
kbmt kbautomation kbhowto KB285332 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 285332

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com