Macro para combinar en un doc Word

Me han pedido que haga una macro de forma que al pulsar un botón en una hoja excel me permita escoger un criterio de filtrado, filtre esos valores y use ciertas columans de ese filtro apra combinar directamente en un documento Word (una carta) previamente diseñada. Es urgente.

1 respuesta

Respuesta
1
Como que no entendí, si es pregunta, es comentario, "u que", como diría un amigo...
Si es tarea con gusto te ayudo a desarrollarla pero debes de poner de tu parte, ¿qué es lo que tienes respecto a código?
Lo que he logrado ha sido que al pulsar un botón en excel, se haga un filtro como yo quiero y esos datos se copien a otra hoja. Mi pregunta es:¿Cómo puedo hacer que dichos datos se combinen en una carta de Microsoft Word directamente? Es decir, que lo haga todo seguido al pulsar el botón.
Espero que me hayas comprendido ahora
No, disculpa, soy un poco "lento", si entiendo lo que quieres, pero si no das "detalles", ni pones código, a mi vez puedo suponer que no tendrás problema con el código que te envíe, así que supondré esto y te anexo una código que esta asignado al evento click de un botón, lo que hace, es tomar datos de una base de datos (verifica el nombre, la ruta y la consulta SQL) y combinarlos en un correo electrónico, para lograr lo que quieres, este código te sirve, con unos pequeños cambios que es tu tarea hacerlos...
Private Sub cmdEnviarCorreo_Click()
Dim objWord As Object 'Instancia de Word
Dim strMensaje As String 'Cuerpo del mensaje
Dim strConexion As String 'Conexion a la base de datos
Dim strSql As String 'Consulta de SQL
Dim strTitulo As String 'Titulo del mensaje
Dim strPLinea As String 'Primer linea del mensaje
Dim strSql2 As String 'Consulta personalizada
Dim bolPersonal As Boolean 'Si hay consulta personalizada
Dim Res As Integer 'Respuestas al MsgBox
'Contantes definidas para las propiedades y metodos de Word
Const wdFormLetters As Integer = 0 'Tipo de documento combinado
Const wdOpenFormatAuto As Integer = 0 'Apertura de formato automatico
Const wdSendToEmail As Integer = 2 'Combinar en correo electronico
Const wdDefaultFirstRecord As Integer = 1 'Primer registro por default
Const wdDefaultLastRecord As Integer = -16 'Ultimo registro por default
Const wdStory As Integer = 6 'Avance por documento
Const wdLine As Integer = 5 'Avance por linea
On Error GoTo err_Control
'Ruta de la base de datos
strBase = App.Path & "\Datos.mdb"
'Consulta SQL
strSql = "SELECT * FROM [tblDatos]"
strMensaje = Trim(txtCuerpo.Text)
'Creamos el documento de Word
Set objWord = CreateObject("Word.Document")
With objWord.Parent
.Selection.TypeText strMensaje 'Introduzco el mensaje
With .ActiveDocument.MailMerge 'Combino correspondencia
.MainDocumentType = wdFormLetters
'Establezco todas las propiedades
.OpenDataSource Name:=strBase, _
Format:=wdOpenFormatAuto, _
ConfirmConversions:=False, _
ReadOnly:=False, _
LinkToSource:=False, _
AddToRecentFiles:=False, _
PasswordDocument:="", _
PasswordTemplate:="", _
Revert:=False, _
WritePasswordDocument:="", _
WritePasswordTemplate:="", _
Connection:=strConexion, _
SQLStatement:=strSql, _
SQLStatement1:=""
'Edito el documento
.EditMainDocument
objWord.Parent.Selection.HomeKey Unit:=wdStory
objWord.Parent.Selection.EndKey Unit:=wdLine
'Le agrego el campo Nombre
.Fields.Add Range:=objWord.Parent.Selection.Range, _
Name:="Nombre"
'Le dijo que envie por correo el documento combinado
.Destination = wdSendToEmail
.MailAsAttachment = False
'Le dijo que campo tiene la direccion de correo
.MailAddressFieldName = "Correo"
.MailSubject = strTitulo
.SuppressBlankLines = True
'Le dijo que envie todos
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
'Ejecuto la combinacion
.Execute Pause:=False
End With
End With
'Ssalgo de Word
objWord.Parent.Application.Quit 0
'Libero la memoria
Set objWord = Nothing
MsgBox "Proceso terminado con exito", , "Envio de correo"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas