combinar correspondencia word.

16/03/2006 - 02:04 por Jose | Informe spam
como se puede hacer un archivo csv de unos datos de sql 2000 y ejecutar un
formato hecho en word que tiene vinculado ese csv?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
20/03/2006 - 21:27 | Informe spam
Hola Jose

Para la primera parte, supongamos que tienes una base de datos, con una
tabla que contiene los campos con los datos de las personas a las que quieres
enviar las cartas mediante combinación de correspondencia.

Mediante objetos de ADO.NET, establecemos una conexión contra la base de
datos y ejecutamos un comando que nos devuelva los registros necesarios, que
recorremos mediante un DataReader, y volcamos a un archivo de texto. Cada
campo lo separamos por comas.

Finalizada esta operación, iniciamos desde VB la aplicación de Word,
añadimos un nuevo documento, y mediante la opción de combinación de
correspondencia, abrimos el archivo de texto y pasamos su contenido a Word.
Esta opción de combinación de correspondencia nos creará un documento por
cada fila de datos de persona existente en el archivo de texto con el que
realizamos la combinación.

Debemos establecer una referencia en nuestro proyecto al componente de Word,
y por otra parte importar los espacios de nombres correspondientes. En el
siguiente código te muestro un ejemplo de cómo podrías hacer estas
operaciones, de forma que basándote en él puedas aplicarlo a tu caso:

'/////////////////////////////
Imports Microsoft.Office.Interop
Imports System.Data.SqlClient
Imports System.IO

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim oConexion As SqlConnection = New SqlConnection()
oConexion.ConnectionString = "Data Source=localhost;Initial
Catalog=PRUEBA;Integrated Security=True"

Dim oComando As SqlCommand = New SqlCommand
oComando.Connection = oConexion
oComando.CommandText = "SELECT * FROM PERSONAS"

Dim oArchivo As StreamWriter = New
StreamWriter("c:\cubo\DatosCorrespondencia.txt")
oArchivo.WriteLine("Apellidos,Nombre,Ciudad")

oConexion.Open()

Dim oReader As SqlDataReader = oComando.ExecuteReader()
While oReader.Read()
oArchivo.WriteLine(oReader("Apellidos") & "," & _
oReader("Nombre") & "," & _
oReader("Ciudad"))
End While

oReader.Close()
oConexion.Close()
oArchivo.Close()

Dim oWord As Word.ApplicationClass
oWord = New Word.ApplicationClass
oWord.Visible = True
oWord.WindowState = Word.WdWindowState.wdWindowStateNormal
oWord.Documents.Add()

oWord.ActiveDocument.MailMerge.OpenDataSource("c:\cubo\DatosCorrespondencia.txt")
oWord.ActiveDocument.Fields.Add(oWord.Selection.Range,
Word.WdFieldType.wdFieldAddressBlock, _
"\f ""<<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" &
ControlChars.Cr & _
"<<_COMPANY_" & ControlChars.Cr & _
">><<_STREET1_" & ControlChars.Cr & _
">><<_STREET2_" & ControlChars.Cr & _
">><<_POSTAL_ >><<_CITY_>><<" & ControlChars.Cr & _
"_COUNTRY_>>"" \l 3082 \c 2 \e ""España"" \d")

oWord.ActiveDocument.MailMerge.Destination =
Word.WdMailMergeDestination.wdSendToNewDocument
oWord.ActiveDocument.MailMerge.SuppressBlankLines = True
oWord.ActiveDocument.MailMerge.DataSource.FirstRecord =
Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord
oWord.ActiveDocument.MailMerge.DataSource.LastRecord =
Word.WdMailMergeDefaultRecord.wdDefaultLastRecord
oWord.ActiveDocument.MailMerge.Execute(False)
End Sub
End Class
'/////////////////////////////

Espero que te sirva de ayuda.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jose" wrote:

como se puede hacer un archivo csv de unos datos de sql 2000 y ejecutar un
formato hecho en word que tiene vinculado ese csv?

Gracias de antemano.



Respuesta Responder a este mensaje
#2 Jose
22/03/2006 - 04:29 | Informe spam
Gracias Luis voy a probarlo.

"Luis Miguel Blanco" escribió
en el mensaje news:
Hola Jose

Para la primera parte, supongamos que tienes una base de datos, con una
tabla que contiene los campos con los datos de las personas a las que
quieres
enviar las cartas mediante combinación de correspondencia.

Mediante objetos de ADO.NET, establecemos una conexión contra la base de
datos y ejecutamos un comando que nos devuelva los registros necesarios,
que
recorremos mediante un DataReader, y volcamos a un archivo de texto. Cada
campo lo separamos por comas.

Finalizada esta operación, iniciamos desde VB la aplicación de Word,
añadimos un nuevo documento, y mediante la opción de combinación de
correspondencia, abrimos el archivo de texto y pasamos su contenido a
Word.
Esta opción de combinación de correspondencia nos creará un documento por
cada fila de datos de persona existente en el archivo de texto con el que
realizamos la combinación.

Debemos establecer una referencia en nuestro proyecto al componente de
Word,
y por otra parte importar los espacios de nombres correspondientes. En el
siguiente código te muestro un ejemplo de cómo podrías hacer estas
operaciones, de forma que basándote en él puedas aplicarlo a tu caso:

'/////////////////////////////
Imports Microsoft.Office.Interop
Imports System.Data.SqlClient
Imports System.IO

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim oConexion As SqlConnection = New SqlConnection()
oConexion.ConnectionString = "Data Source=localhost;Initial
Catalog=PRUEBA;Integrated Security=True"

Dim oComando As SqlCommand = New SqlCommand
oComando.Connection = oConexion
oComando.CommandText = "SELECT * FROM PERSONAS"

Dim oArchivo As StreamWriter = New
StreamWriter("c:\cubo\DatosCorrespondencia.txt")
oArchivo.WriteLine("Apellidos,Nombre,Ciudad")

oConexion.Open()

Dim oReader As SqlDataReader = oComando.ExecuteReader()
While oReader.Read()
oArchivo.WriteLine(oReader("Apellidos") & "," & _
oReader("Nombre") & "," & _
oReader("Ciudad"))
End While

oReader.Close()
oConexion.Close()
oArchivo.Close()

Dim oWord As Word.ApplicationClass
oWord = New Word.ApplicationClass
oWord.Visible = True
oWord.WindowState = Word.WdWindowState.wdWindowStateNormal
oWord.Documents.Add()

oWord.ActiveDocument.MailMerge.OpenDataSource("c:\cubo\DatosCorrespondencia.txt")
oWord.ActiveDocument.Fields.Add(oWord.Selection.Range,
Word.WdFieldType.wdFieldAddressBlock, _
"\f ""<<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" &
ControlChars.Cr & _
"<<_COMPANY_" & ControlChars.Cr & _
">><<_STREET1_" & ControlChars.Cr & _
">><<_STREET2_" & ControlChars.Cr & _
">><<_POSTAL_ >><<_CITY_>><<" & ControlChars.Cr & _
"_COUNTRY_>>"" \l 3082 \c 2 \e ""España"" \d")

oWord.ActiveDocument.MailMerge.Destination > Word.WdMailMergeDestination.wdSendToNewDocument
oWord.ActiveDocument.MailMerge.SuppressBlankLines = True
oWord.ActiveDocument.MailMerge.DataSource.FirstRecord > Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord
oWord.ActiveDocument.MailMerge.DataSource.LastRecord > Word.WdMailMergeDefaultRecord.wdDefaultLastRecord
oWord.ActiveDocument.MailMerge.Execute(False)
End Sub
End Class
'/////////////////////////////

Espero que te sirva de ayuda.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jose" wrote:

como se puede hacer un archivo csv de unos datos de sql 2000 y ejecutar
un
formato hecho en word que tiene vinculado ese csv?

Gracias de antemano.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida