PROGRAMAR EN VBA MACROS PARA EXCEL: Como Conectar Excel con Word y modificar plantilla

Como Conectar Excel con Word y modificar plantilla





Hoy muestro como modificar una plantilla de Word con una Macro de Excel, en otras palabras la macro permite pasar todos los datos contenidos en una hoja de Excel a un documento de Word modificarlo; algo que puede ser útil a las personas que utilizan Word y se relaciona con alguna base de datos de Excel.

Otros post relacionados con macros que permiten manejar Word desde Excel:
Como crear un archivo de Word con Excel
Como abrir un archivo de Word con Excel
Como conectar Excel con Word crear archivo e insertar texto en Word
Como dar formato a texto de Word desde Excel 
Como abrir modificar e imprimir archivo de Word con macro desde Excel
Como modificar una plantilla de Word con macro de Excel

Por favor lee un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


La macro contenida en el archivo que podrás descargar en forma gratuita desde el final, permite tomar una serie de datos, contenidos en el ejemplo en la columna B; y copiar o escribir esos datos en una plantilla de Word, cada uno le dará distinta utilidad, el ejemplo intenta mostrar como a partir de una macro de Excel se puede manipular Word y modificar una plantilla con datos contenidos en hojas de Excel.

Al descargar el ejemplo verás que bajarás un archivo comprimido, en él se encuentra un fichero de Excel que contiene la macro y un Archivo de Word que funciona como plantilla, esto también puede servir para rellenar una carta, lo cual se verá más adelante; estos dos archivos se deben colocar en una misma carpeta, no interesa en que lugar de la PC, la macro detecta la dirección en forma automática del archivo de Word, el que es utilizado como plantilla, al presionar el botón se ejecuta una macro que pasa los datos contenidos en la columna B de la hoja de Excel a un archivo de Word, para finalizar lo guarda con el mismo nombre que el archivo de Excel, pero con formato de Word por supuesto, cerrando el archivo de Word usado como plantilla sin modificar para que sirva para otra oportunidad.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.

En el vídeo que se observa más abajo, verás una explicación y funcionamiento en forma más gráfica y detallada; recomiendo que lo mires y el ejemplo será más fácil de comprender si eres un principiante en el tema de macros o no tiene mucha experiencia en trabajar con macros que conectan Excel con Word.






Código que se inserta en un módulo




Sub ExcelModificaPlantillaWord()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document
Dim datos(0 To 1, 0 To 4) As String
On Error Resume Next
Set a = Sheets(ActiveSheet.Name)
nom = ActiveWorkbook.Name
pto = InStr(nom, ".")
nomarch = Left(nom, pto - 1)
ruta = ThisWorkbook.Path & "\" & nomarch & ".docx"
Set objWord = CreateObject("Word.Application")
objWord.DisplayAlerts = wdAlertsNone
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(ruta)
nomfic = nomarch & " " & a.Range("B4") & " " & a.Range("B5")
rutainf = ThisWorkbook.Path & "\" & nomfic & ".docx"

'Asignamos a variables que se debe buscar y el texto por que se debe reemplazar
datos(0, 0) = "[Campo_Fecha]"
datos(1, 0) = a.Range("B2")
datos(0, 1) = "[Campo_Anexo]"
datos(1, 1) = a.Range("B3")
datos(0, 2) = "[Campo_Socio1]"
datos(1, 2) = a.Range("B4")
datos(0, 3) = "[Campo_Socio2]"
datos(1, 3) = a.Range("B5")
datos(0, 4) = "[Campo_Domicilio]"
datos(1, 4) = a.Range("B6")

'Creamos un bucle que va desde el primero al último número de la matriz
For I = 0 To UBound(datos, 2)
textobuscar = datos(0, I)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
'Bucle para reemplazar todo el texto que encuentre y solo el primero que encuentre
While objWord.Selection.Find.Found = True
objWord.Selection.Text = datos(1, I) 'texto a reemplazar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next I

'Guarda el archivo con el nombre asignado
wdDoc.SaveAs Filename:=rutainf, FileFormat:=wdFormatXMLDocument
'wdDoc.Close
MsgBox ("El libro se generó con éxito"), vbInformation, "AVISO"
wdDoc.Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends