Pasar datos de Excel a plantilla de Word con macro

El objetivo de este artículo es llevar, transportar o pasar información de Excel a una plantilla de Word mediante una macro. Una plantilla de Word se usa con documentos en que solo cambian parámetros preestablecidos, por ejemplo podemos tener una plantilla de una carta de agradecimiento en que solo cambia la fecha y a quién va dirigida. Eso es lo que la hace por un lado personalizada pero por otro permite generar documentación de contenido repetitivo.
A veces completar la plantilla, aunque es un documento semi-elaborado puede ser arduo ya que debemos escribir manualmente los datos. Podemos tener una lista de los datos en Excel  y esos datos los que voy cambiando en Word. Esa es la utilidad de esta mini aplicación como veremos.
El método que vamos a ver no es el único, se pueden utilizar otros pero es una opción.
En este artículo en particular suponemos que tenemos una plantilla de una especie de certificado, en dónde tenemos variables que van cambiando.


Click en la imagen para ver el video o en este link.

Plantilla en Word:
Como dijimos más arriba tenemos una plantilla de un certificado, en dónde podemos ver las variables. En este caso: Nombre Completo, Nombre de la Charla, Nombre de la Jornada, Nombre del Instituto, Nombre de Expositor, Nombre de Expositor, Fecha y año. Como ven para diferenciar completamente con el texto normal del documento se utilizan corchetes y no se dejan espacios.


Por otro lado tenemos en Excel la lista de variables que van a cambiar en la plantilla.

Datos en Excel:


En este caso se  puede suponer que es una lista de los asistentes a las jornadas. Como ven para individualizar a cada asistente se utiliza un numero. Esta hoja no contiene formulas, solo información en forma de lista.  También vemos un boton al que vincularemos con la macro para llevar automáticamente cada variable de un asistente al certificado. Por ejemplo en la figura el asistente n° 9. También pueden ver que esta sombreado toda la fila. Esto último se logra fácilmente con un formato condicional en e que con una formula le decimos que si el número que ven arriba a la izquierda con un número de la primera columna , toda esta se sombre. Es un truco simple.


Por otro lado agregamos un “spinbutton o Control de Número”. Es para no tener que entrar el número con el teclado.

Hoja auxiliar de Excel:
Para esta mini aplicación vamos a necesitar una hoja auxiliar con algunos datos.


Como vemos en la segunda columna tenemos las etiquetas o variables que son las mismas que vamos a reemplazar por los datos en la plantilla de Word.
En la primer columna mediante una fórmula que toma como dato el número que está en la hoja de datos “celda A1”, el número de asistente. Y muestra el dato correspondiente a ese asistente y a esa etiqueta.
La variable año se obtiene de aplicar la formula Año al dato de la fecha.
Por otro lado se necesita cierta información para la macro, los datos que están en la celda 3. Son los datos del número de variables, del nombre de la plantilla y de la ubicación del archivo.

Macro en Excel:
---------------------------------------INICIO CÓDIGO----------------------------------------
Sub toWord()
'Ubicación y nombre de la plantilla
'La ubicación está dada por la concatenación de los datos de dos celdas + la extensión del archivo de plantillas de Word.
wArch = Hoja1.Range("C3").Text & Hoja1.Range("C2").Text & ".dotx"
'Con la variable siguiente definimos que vamos a trabajar con un documento de Word.
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Creamos un documento nuevo con la plantilla
objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0
'Utilizamos For para recorrer todas las variables de 1 al dato de la celda C1.
For i = 1 To Hoja1.Range("c1").Value 'celda dónde está la cuenta
datos = Hoja1.Range("B" & i).Text 'dónde están los datos
reemp = Hoja1.Range("A" & i).Text 'dónde están las etiquetas
     'utilizamos buscar y reemplazar de word
     With objWord.Selection.Find
            .Text = datos 'busca el texto de datos
            .Replacement.Text = reemp 'reemplaza por el texto
            .Execute Replace:=2 'la variable en dos es para reemplazar todos los valores
     End With
Next i
 objWord.Activate 'Activa el documento de word
End Sub
Si no comprenden de todo el código pueden investigar en internet, cada parte.
---------------------------------------FIN CÓDIGO----------------------------------------
Con todos los elementos vistos podemos construir una aplicación interesante. Esperamos que les sirvan y le gusten las ideas.

Pueden descargar algunos ejemplos (plantillas/templates) de la zona de Descargas. Si tienen alguna duda o consulta pueden hacerlo a través del formulario de contacto.
Les recomendamos que sigan el blog por alguno de los medios, mail o por redes sociales, para recibir las actualizaciones y novedades.

¡Éxitos!

Keys:
·         Pasar datos de Excel a Word con macros VBA
·         Enviar datos de Excel a plantilla de Word con macro
·         Llevar datos de Excel  a plantilla de Word.
·         Enviar datos de Excel a Word

·         Send data from Excel to Word Template with macro

98 comentarios:

Alvaro Pascual Toledano dijo...

Hola, gran post, tengo un pequeño problema, no me encuentra el archivo al ejecutar la macro, he revisado la ubicación etc, pero me da error en la linea
objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0

Si puedes ofrecerme alguna idea de que puede ser te lo agradezco! saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos.
Algo que hay que considerar ,que genera un error común, es que la plantilla y el archivo de Excel deben estar en la misma carpeta. Ten en cuenta esto. Sino nos puedes consultar directamente mediante el formulario de contacto. Saludos

Unknown dijo...

Hola Juan Pablo

Tengo un problema, el código corre y abre el word, pero no llega a hacer el reemplazo, talvez sea por que las variables estan dentro de cuadro de texto :( alguna modificacion para que reemplaze las variables dentro de los cuadros de texto?

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos.
En cuanto a tu consulta, porqué las variables están en un cuadro de texto? esto lo hace más complicado. Para que reemplace lo del cuadro hay que hacer dos pasadas. Recuerda que nos puedes contactar directamente mediante el formulario de consulta.
Saludos

Torres Anchante dijo...

ok, funciona con las palabras del cuerpo del documento, pero no me funciona con palabras en el encabezado, alguna solucion?

Juan Pablo Torres dijo...

Hola amigo, gracias por comentar!
En cuanto a tu consulta, es cierto, en este caso solo funciona para el cuerpo. Es un error de las macros ya que si lo haces manual se puede. Deberías hacer unas pruebas, quizás debas seleccionar el objeto para hacerlo. Recuerda que nos puedes escribir directamente mediante el formulario de contacto. Saludos

luis lopez dijo...

como hago para que me respete el formato de fecha larga y hora al momento de pasar los datos a word me cambia la fecha a fecha corta dd/mm/aa y la hora me pone 0.83333333 alguna idea. gracias

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
Lo del formato tendrá que ver con algo del código. Como utilizamos la variable .text no deberías tener problemas porque te pasa las variables como texto. De otra manera puedes usar la variable format() y le das el formato que tu quieras. Recuerda que nos puedes escribir directamente mediante el formulario de contacto. Saludos

Diego De Bernardi dijo...

Blogger Juan Pablo Torres dijo...
Hola amigo, cómo estas! Gracias por escribirnos.
En cuanto a tu consulta, porqué las variables están en un cuadro de texto? esto lo hace más complicado. Para que reemplace lo del cuadro hay que hacer dos pasadas. Recuerda que nos puedes contactar directamente mediante el formulario de consulta.
Saludos

16 de junio de 2014, 10:33

¿Qué debo hacer en el código para que ejecute las dos pasadas?

Gracias
Diego

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Recuerda que la macro graba una acción que tu puedes hacerla manualmente. Si realizas la acción que hace la macro e intentas reemplazar el texto que esta en el documento, en una caja de texto. Te darás cuenta que a la primera no te toma sino a la segunda. Escríbenos con el formulario y vemos si te podemos ayudar. Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Recuerda que la macro graba una acción que tu puedes hacerla manualmente. Si realizas la acción que hace la macro e intentas reemplazar el texto que esta en el documento, en una caja de texto. Te darás cuenta que a la primera no te toma sino a la segunda. Escríbenos con el formulario y vemos si te podemos ayudar. Saludos

Diego De Bernardi dijo...

Hola Juan Pablo,
Intente lo que me dices en la respuesta de ayer, pero sigue sin actualizarme la caja de texto. hay alguna forma de agregar al código para que realice esta acción. O les puedo hacer llegar el archivo que arme para ver como se puede solucionar.

Gracias
Diego

Juan Pablo Torres dijo...

Hola amigo, cómo estas!
Escríbenos mediante el formulario de contacto. Lo que más te conviene es no usar cajas de texto para no complicar el código. más bien usa solo texto plano y dale el formato adecuado para que parezca que esta dentro de una caja. Saludos

duke005 dijo...

muy buen tutorial queria conpartir contigo un problema, el cual talves en la comunidad se pueda hallar la respuesta. el problema es que la opcion reemplazar solo permite una cantidad de texto lo cual no permite reemplazar una palabra por una gran cantidad de texto como si lo permite openoffice, mi problema es ese que necesito reemplazar por una cantidad mayor que la que permite el comando reemplazar igual excelente tu aporte saludos duke

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribir!
La solución que se plantea aquí es para el problema que sucede generalmente que es tener un texto extenso, por ejemplo un contrato, dónde reemplazamos palabras "claves" o "Textos claves" en el documento. Nos podrías dar un ejemplo de un reemplazo con un texto extenso?
Saludos

Fernando Miguez dijo...

buenas, yo creo que lo que duke005 quiso decir es el mismo problema que tengo yo,
en una casilla de excel tengo 'mucho texto' como 100 o 200 palabras,
cuando intentas ejecutar la macro para una casilla de excel con tanto texto, te da un error,

alguna solucion?? un salduo gracias de antemano

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribir!
El tema es el siguiente, como explicamos a Fernando, que en general lo que se tiene es una plantilla de texto, por ejemplo un contrato donde cambias textos cortos dentro de él. Se podría hacer pero tendríamos que entender para qué serviría la aplicación. Nos puedes dar un ejemplo así lo analizamos. Gracias!!

saa dijo...

Hola Juan Pablo, por favor podrías enviarme la plantilla word y el archivo excel de esta publicación? en la sección de descargas no los puedo encontrar. Mi email es irreverente.americano@gmail.com
Gracias

Juan Pablo Torres dijo...

Hola amigo, cómo estas! En este momento no esta disponible la descarga de la plantilla. Igualmente la idea es que lo intentes , con los pasos y elementos del blog lo podrás lograr. Inténtalo y si necesitas hacernos alguna consulta nos puedes escribir mediante el formulario de contacto.
Saludos

Luis Mata dijo...

quiero aplicar este ejercicio, pero quiero hacerlo en powerpoint, es posible, me pueden ayudar..!!!

Juan Pablo Torres dijo...

Hola amigo, gracias por comentar!
Cómo sería en power point, es decir, crer un documento a partir de una plantilla de power point?
Recuerda nos puedes escribir directamente mediante el formulario del blog. Saludos

Danielito Lopez dijo...
Este comentario ha sido eliminado por el autor.
La Otra dijo...

Hola, gran post, tengo un pequeño problema, no me encuentra el archivo al ejecutar la macro, he revisado la ubicación etc, pero me da error en la linea
objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0

Si puedes ofrecerme alguna idea de que puede ser te lo agradezco! saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
Revisa la ubicación y revisa la extensión del archivo. Además recuerda que deben estar en la misma carpeta. Sino nos puedes contactar directamente por el formulario de contacto.
Saludos

Arcenio González dijo...

Hola, es muy interesante tu aplicación. Me interesaría saber como puedo hacer para imprimir varias hojas al mismo tiempo, es decir, no tener que estar pasando de uno en uno, si no que se pasen todos o algunos a la vez.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu comentario, esto sería motivo de otro artículo. Vamos a tenerlo en cuenta para otra publicación, esperamos tenerla pronto.
Saludos

Geroge dijo...

Hola amigo exelente blog, muy util, ya hice todo lo excel y me salio a la primera, pero como dice el dicho ina idea buena despierta otra, jeje, lo que quiero hacer y que no me quedo claro en un comentario que hisiste en tu blog, es hacerlo con cuadros de texto, necesito que sean cuadros de texto para que no se mueva o se recorran los datos ya que los necesito en una posicion especifica, como logro hacer esto??
de antemano muchas gracias.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, lo que intentamos decir es que en este caso lo tratamos de hacer lo más simple posible. Si quieres hacerlo con cuadros de texto sería un procedimiento más complejo, esta en los planes hacer un artículo de eso pero aún no hemos tenido el tiempo necesario. Te pedimos por favor que nos recuerdes esto así lo intentamos realizar. Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, lo que intentamos decir es que en este caso lo tratamos de hacer lo más simple posible. Si quieres hacerlo con cuadros de texto sería un procedimiento más complejo, esta en los planes hacer un artículo de eso pero aún no hemos tenido el tiempo necesario. Te pedimos por favor que nos recuerdes esto así lo intentamos realizar. Saludos

Marcos Almaguer dijo...

Hola buena tarde, se me hizo muy práctico la manera en la que explicaste el proceso, tengo una duda, las claves que tengo en la plantilla de word para reemplazar las tengo una debajo de la otra, en algunas en lugar de reemplazar el texto quiero que lo elimine pero que no me deje el espacio en blanco para que los demas reemplazos suban de lugar, ¿Cómo podría lograr esto?
Saludos y gracias de antemano

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
EN cuanto a tu consulta, habría que probar, por ahí sirve el reemplazo por "espacio vacío". Por ejemplo si usas el comando reemplazar del word y en el texto a reemplazar pones la clave y el texto nuevo no pones nada, te elimina la clave. Esperamos tus comentarios para saber si funcionó. Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
EN cuanto a tu consulta, habría que probar, por ahí sirve el reemplazo por "espacio vacío". Por ejemplo si usas el comando reemplazar del word y en el texto a reemplazar pones la clave y el texto nuevo no pones nada, te elimina la clave. Esperamos tus comentarios para saber si funcionó. Saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
EN cuanto a tu consulta, habría que probar, por ahí sirve el reemplazo por "espacio vacío". Por ejemplo si usas el comando reemplazar del word y en el texto a reemplazar pones la clave y el texto nuevo no pones nada, te elimina la clave. Esperamos tus comentarios para saber si funcionó. Saludos

Marcos Almaguer dijo...

Ya probé con espacio vacío, pero no funcionó,te agradezco de cualquier manera, tengo otra pregunta, si el archivo de word lo protejo con una contraseña para que no lo puedan abrir, ¿qué instrucción tendría que agregar a mi macro para que me abra el archivo sin pedir contraseña al usuario? de antemando muchas gracias por tu atención

Unknown dijo...

Hola, buen dia.. muy buena explicacion, solo que tengo una duda, como se podria realizar la impresion multiple y que sea en PDF, saludos!

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, hay un artículo que trata de impresiones múltiples. Desde word o desde Excel??
Saludos

Juan Pablo Torres dijo...

Hola Marcos, en cuánto a tu consulta. Quieres proteger la plantilla de word? a eso te refieres? habría que hacer unas pruebas pero no debe ser complicado. Si quieres nos escribes directamente mediante el formulario del blog. Saludos

Gustavo Gonzalez dijo...

Hola, buenas tardes.

Disculpa pero en la sección de descargas no veo el link para descargar esta mini app. Me podrías orientar sobre como podría descargarlo.

Muchas gracias y saludos!

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, el artículo esta bastante completo como para que puedas hacerlo. Es por eso que no esta disponible para descargarla.
Saludos

Ma. José Ruiz Estrada dijo...

Hola. ya hice el codigo, pero cuando lo corro, me intenta abrir word, pero luego sale error 5151 tiempo de ejecucion excedido. a que se debe esto? como puedo solucionarlo? mil gracias.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En esta aplicación hay errores comunes a tener en cuenta, que están descritos. Uno de ellos es que se defina mal el path o ubicación del archivo y el otro es que no estén los dos archivos en la misma carpeta. A veces también se utilizan mal las extensiones de los archivos. Revisa esto. Recuerda que nos puedes escribir directamente mediante el formulario de contacto.
Saludos

Paulo Bastias dijo...

Buenas tardes, apliqué la macro para llenar unas plantillas, lo cual ha funcionado de forma parcial, pues hay campos que a pesar de estar con valores y considerados en la busqueda de variables, no son traspasados a la plantilla y solamente me escribe el nombre de la variable, por ejemplo "[costo_inicial]" y no traslada el valor asignado a la plantilla. Porqué puede suceder esto???

Muchas Gracias,

Juan Pablo Torres dijo...

Hola paulo, cómo estas! Gracias por escribirnos!
Seguramente es un error en el código, o en la distribución de variables. Revisa detalladamente que hace cada parte. Por otro lado, un error común es querer poner la variable en un cuadro de texto. Recuerda que para este caso no serviría.
Esperamos tus comentarios o nos puedes escribir directamente mediante el formulario de contacto.
Saludos

Paulo Bastias dijo...
Este comentario ha sido eliminado por el autor.
Paulo Bastias dijo...

Buenos dias Juan Pablo

Revisé la hoja auxiliar y encontré el problema, te comento que en la hoja auxiliar comencé a escribir los datos desde la fila 3. como tengo 23 variables en total, en la columna C, estas llegaban hasta la fila 25. Otro antecedente es que al hacer el conteo de las celdas no vacías en la columna C, el valor era 23.
Ahora en la macro definí el valor del conteo para que ejecutara la secuencia "for" y ahí precismanete está el error, puesto que este comenado comienza a contar desde la primer fila y es por esto que no consideraba mis datos desde la fila 23 en adelante y justamente el valor de la variable "costeo" estaba en la siguiente fila.

Gracias por tu respuesta y espero que esta aclaración le pueda servir a algun colega

Alejandra MARTINEZ BURGOS dijo...

Buenas tardes, realice el tutorial y quedo muy bien, ahora tengo una duda, lo estoy empleando pero para hacer presupuestos, por lo que los datos que se toman desde excel son numericos, tengo el formato puesto en las celdas pero no se si se podria configurar de algun modo para que al pasarlos al documento de word se respete y se muestren los separadores de puntos y comas, por ejemplo que se vea 3,000.00 en vez de 3000. Gracias de antemano por este funcional tutorial. :)

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por los comentarios!
En cuanto a tu consulta, claro que se puede. Deberías ver cómo configurar el formato al pasar de excel a word. En el código puedes darle el formato a la variable con el código "format()" que es lo mismo que usar "texto" en una formula dentro de una celda. Prueba y luego nos comentas.
Saludos

Alejandra MARTINEZ BURGOS dijo...

Hola otra vez, la verdad es que nunca habia usado macros y apenas estoy experimentando, te agradeceria si me orientaras donde colocar el format, si en la parte donde recorre las variables o en la parte donde busca y reemplaza en word. Probe despues de wArch con: Columns("C:P").NumberFormat = "Currency" y me marca error. Espero puedas asesorarme al respecto, gracias.

Juan Pablo Torres dijo...

Alejandra, recuerda que utilizamos la hoja aux. para el tratamiento de variables? si cambias el formato (como tu quieras) a los datos de esa hoja, es decir las variables, verás que pasa todo tal cuál lo configuras ahí a word. Prueba y nos cuentas. Saludos

Alejandra MARTINEZ BURGOS dijo...

Claro, no se porque no se me ocurrio antes, tenia formato en la otra hoja pero no en la que recogía la información para pasarla a word. Muchas gracias, me has salvado de seguir despedazando el código que ya funcionaba. Ahora tengo problema al usar la macro en otras computadoras, pero bueno eso creo poder solucionarlo. Gracias nuevamente.

Alejandra MARTINEZ BURGOS dijo...

Claro, no se porque no se me ocurrio antes, tenia formato en la otra hoja pero no en la que recogía la información para pasarla a word. Muchas gracias, me has salvado de seguir despedazando el código que ya funcionaba. Ahora tengo problema al usar la macro en otras computadoras, pero bueno eso creo poder solucionarlo. Gracias nuevamente.

Alejandra MARTINEZ BURGOS dijo...

Claro, no se porque no se me ocurrio antes, tenia formato en la otra hoja pero no en la que recogía la información para pasarla a word. Muchas gracias, me has salvado de seguir despedazando el código que ya funcionaba. Ahora tengo problema al usar la macro en otras computadoras, pero bueno eso creo poder solucionarlo. Gracias nuevamente.

Misión Peruana del Norte dijo...
Este comentario ha sido eliminado por el autor.
Dominique Ireland Novak dijo...

Hola, muchas gracias por el tutorial, está buenisimo. Estaba buscando algo así, ya que necesito generar 120 contratos con empresas y no me da el tiempo para hacerlo uno a uno.
Aunque no me salió a la primera, ya que me arrojó un error 5174 y cuando le hago clic en depurar me señala esta columna "objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0"

De antemano gracias por la respuesta

fernando alexander carrillo leon dijo...

Buen dia me gustaria saber si esposible que mantega el mismo formato de texto al momento de pasar los datos ya que aparecen en mayusculas. Muchas gracias

fernando alexander carrillo leon dijo...

Buen dia me gustaria saber si esposible que mantega el mismo formato de texto al momento de pasar los datos ya que aparecen en mayusculas. Muchas gracias

Juan Pablo Torres dijo...

Muchas Gracias por Escribirnos Dominique y Fernando.
En primer lugar respodemos a Dominique. Si te genera un error esa parte de código es muy probable que se deba a algún problema en la ruta o ubicación del archivo. Revisa que este bien definido, con las variables en el código y que contengan la extensión correspondiente.
En cuanto a la pregunta de Fernando, para que mantenga el formato tienes que definirlo en la plantilla. Debería funcionar, si no es así nos escribes.
Muchas gracias nuevamente y esperamos sus comentarios.
Saludos

samuel castrillon dijo...

Gracias por esta buena explicación, aunque he notado algo:

en esta linea wArch = Hoja1.Range("C3").Text & Hoja1.Range("C2").Text & ".dotx"
digo no deveria ser?... wArch = Hoja2.Range("C3").Text & Hoja2.Range("C2").Text & ".dotx"
y lo mismo en las otras referencias a la hoja2...
y para los que le sale "objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0" asegurence que en la casilla c3 termine la direccion del archovo con \...

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
Estas en lo cierto pero recuerda que el numero de hoja depende de como renombres las solapas de las hojas, es indiferente. Hay que tener cuidado con eso y fijarse dónde esta el dato. Por otro lado es un error común olvidarse de esa barra. Gracias.
Saludos

Enriquev3000 dijo...

Muchas gracias por las ideas. Lo hice y me funcionó con todo el cuerpo del documento. Pero tengo una pregunta: estoy intentando que además desde Excel se pasen a Word datos, pero en dos encabezados - y no me funciona: ¿cómo paso datos a encabezados ?.

Juan Pablo Torres dijo...

Hola amigo! Cómo estas! Gracias por tus comentarios!
En cuanto a tu consulta, con este método no se puede. En algún momento vamos a tratar otros. Nuestra recomendación es tratar de evitar esto, si se pueden utilizar algún artilugio para no usarlos, por ejemplo: quitar los margenes y crear encabezados como cuerpo de documento. Etc.
Esperamos tus comentarios.
Saludos

Francisco Javier Campos Lagos dijo...

Muy buen video, tengo un problema al correrlo en mi Mac, debo cambiar alguna parte del código para que funcione bien? en Microsoft me corre sin problemas, ojalá me puedas ayudar.

Muchas Gracias!

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, hemos recibidos comentarios al respecto y es cierto. A veces no funciona cierta parte del código en mac ya que es otra plataforma y suponemos no interpreta ciertos statements. Además no contamos con un equipo Mac como para hechar mano y arreglar el código. Disculpa no poder ayudarte.
Esperamos tus comentarios.
Saludos

Yusef R, dijo...

Muy buen aporte.Un código excelente. La única pega es trasladar frases completas con un gran numero de caracteres, ya que no es posible, al estar el reemplazo limitado en Word.Alguna persona ya lo ha comentado anteriormente.
Has pensado en solución para este problema, tiene alguna propuesta de codigo que solucione el problema?.

Muchas gracias.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, este tipo de aplicaciones es para eso, son campos que tienen numero limitado de caracteres, por ejemplo: nombre, apellido, dirección, telefono, nombres cortos en general. No funciona para texto plano.
Estas en lo correcto, nos han consultado al respecto y prometimos solución en algun articulo posterior pero con lo dicho anteriormente, nos puedes dar un ejemplo para el cuál debas trasladar texto plano o mucho texto desde Excel a Word? Así pensamos en la aplicabilidad y funcionalidad.
Esperamos tus comentarios.
Saludos

Felipe Vivanco dijo...

hola, tendrán el excel? , ya que lo intente y me manda un error al generar el word

Juan Pablo Torres dijo...

Hola amigo, esta todo en el articulo para que lo puedas construir. Sino creo que en la tienda hay una versión de descarga.
Saludos

mario rodriguez manzanera dijo...

Estupendo ejemplo, lo he seguido y estoy seguro que esta correcto, sin embargo tengo una pregunta al ejecutar el macro me sale un error 438 y el depurador me dice que es en la línea .Excecute Replace:=2 tienes alguna idea de que puede estarle pasando a mi muy anciana PC... estoy usando word 2010. algo olvide inicializar? o necesito algun complemento? saludos cordiales y muchas gracias por su estupendo trabajo y esfuerzo. felicidades.MRM

Juan Pablo Torres dijo...

Hola amigo, cómo estas!
Puede ser que no te este reconociendo ese código. La recomendación que hacemos es que grabes una macro en word haciendo la búsqueda y reemplazo, tal lo que decimos en el artículo y de ahí ve qué código muestra, lo comparas y lo adaptas de ser necesario. Aguardamos tus comentarios.
Saludos

Javier Alfonso Prieto Macias dijo...

Hola

Cuando ejecuto la macro me sale el siguiente cuadro:

Se ha producido el error "5174" en tiempo de ejecución:
Lo sentimos, que no hemos podido encontrar el archivo. ¿Es posible se haya movido, cambiado de nombre o eliminado?

Luego si doy click en depurar, me marca en amarillo:

objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0

Los dos archivos están en las mismas carpetas pero aun así, me sigue saliendo este error. Me podríais ayudar?

Mil gracias

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar.
De seguro esta mal la ruta del archivo. Recuerda que debe ser del tipo : "C:\Mis documentos\plantilla.doc".
Saludos

alejandro soto dijo...

Hola antes que nada quiero agradecerles por sus tutoriales me han ayudado mucho espero que sigan así, estoy haciendo la aplicación y todo funciona perfecto pero tengo un problema Excel no me pasa la variable FECHA a Word (Me pone un numero raro, o un #N/A con un mensaje "Error de valor no disponible"), creo que el error esta en el comando BUSCARV de mi celda FECHA pero no se como la configuraron para que les pasara la Fecha a Word, me podrían ayudar? Gracias de antemano.

Isma Monroy dijo...

HOLA AL CORRER LA MACRO ME SALE ESTE MENSAJE

"Se ha producido el error "5174" en tiempo de ejecución:
Lo sentimos, que no hemos podido encontrar el archivo. ¿Es posible se haya movido, cambiado de nombre o eliminado?"

LA RUTA ESTA BIEN Y EL NOMBRE DEL ARCHIVO
ME PODRIAN AYUDAR

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Lo más probable es que la ruta este mal. Recomendamos usar el código como ejemplo, cuando se hace la aplicación particular es mejor crearla desde cero para no generar errores.
Esperamos tus comentarios.
Saludos

Ruben Moreno dijo...

Muchas Gracias! Pude crear el formulario y anda 10 puntos. Gracias a este mini app en excel puedo configurarlo a mi gusto y aliviar mi trabajo rutinario en un %40 !!! EXCELENTE TODO. Cuando termine la app y le de la utilidad prometo Dejar mi donación a tan buen BLOG! ABRAZO y GRACIAS!!!

Nicolas Sotomayor dijo...

Estimado,

Muchas gracias por su post.

Después de muchas vueltas, logré que me abriera el word al ejecutar la macro, pero no me cambia ningún parámetro a pesar de que se encuentren exactamente con el mismo nombre.

Agradecería tu ayuda

JULIO MIGUEL REZA HUAROC dijo...

Hola Juan sabes, logre abrir la plantilla word desde el formulario pero lo que no puedo es que word ejecute los datos del formulario, por favor si pudiera enviarme el archivo a mi email: rhjm2@hotmail.com
Gracias

Juan Pablo Torres dijo...

Hola Amigo, cómo estas! Gracias por tus comentarios!
En el blog esta todo lo que necesitas para hacer que funcione. Seguramente debes revisar el código o construir la macro en tu propia computadora.
Esperamos tus comentarios. Saludos

Mighel Angel dijo...

Hola, a mi también me aparece el error 5174, y si tengo todo correctamente escrito, y no sé nada de macros ni nada (así que no podría hacerlo yo solo o por mi cuenta).

christian dijo...

Estimado,

Muy buen blog, consulta cual seria la macros si quisiera generar el mismo numero de certificados respecto al numero de filas con datos y que los datos de una fila se inserten en un word; para no tener que hacerlo uno por uno.

Estaria muy agradecido por tu ayuda.

Saludos.

Juan Manuel Palacios dijo...

Hola, muchas gracias por tomarte el tiempo de hacer este tutorial.

Tengo un mac y no me permite ejecutarlo, aparece que es error 429. ¿Alguna idea de qué estoy haciendo mal?

Muchas gracias.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por comentar!
En cuanto a tu consulta, si es mac puede generar errores de incompatibilidad que a veces no son solucionables. Sin embargo revisa que el código este bien. Sobre todo las direcciones, ubicaciones, nombres de carpeta.
Los errores que se han detectado son todos producidos por mala sintaxis.
Esperamos sus comentarios.
Saludos

María Eugenia dijo...

Super agradecida con el post. He logrado entender más las macros pero no logro que funcione ésta.
Probé todas las soluciones planteadas, ya que este error (Error ´5174´) fue consultado por otras lectores.
Como otros, el error surge en la línea

objWord.documents.Add Template := wArch, NewTemplate:=False, DocumentType:=0

controlé el Path, coloqué los archivos en la misma carpeta. Probé escribir en forma directa dentro de la macro, pero el error siempre es el mismo.

Dejo aquí mi consulta 'ilustrada', =)
incluido el código. Espero alguien pueda ayudarme.

https://docs.google.com/document/d/1VJlD9QsnsoRlkqXNwdd6QNMdlLYombOsAbUk1Gv26Xc/edit?usp=sharing

Juan Pablo Torres dijo...

Hola María, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, es verdad , hemos respondido varias veces esta consulta. Introducimos un pequeño error en el código para que se den cuenta y estudien realmente la aplicación. De esa manera pueden no solo usar lineas de código sino además investigar, probar, etc. Notamos que ha funcionado muchas veces y otras no. Revisa bien la ruta, te darás cuenta que hay un error. Utiliza la ventana inmediato para poder ver el resultado de las variables.
Esperamos tus comentarios.
Saludos

Lucia marino dijo...

Hola!!! Excelente explicación, he conseguido reproducirla para completar fichas de 100 empleados, pero necesitaría que en vez de que el formato final sea un word, sea un pdf. Que tengo que hacer? Gracias de antemano!

Juan Pablo Torres dijo...

Hola amiga, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, esta solucionado en el artículo que sigue de este tema. Revisa la lista de artículos.
Saludos

Jairo Andrés dijo...

Juan Pablo hola,

Existe forma de remplazar una palabra especifica como [GRAFICO1] por un gráfico o tabla realizado o programado en excel? El grafico sale perfecto al utilizar el siguiente codigo:

Sub GDeLluvias()
Dim Lluvias As ChartObject
Set Lluvias = Sheets("Hoja1").ChartObjects.Add(Left:=300, Top:=0, Width:=300, Height:=200)

With Lluvias.Chart
.SetSourceData Source:=Sheets("Hoja1").Range("A1:B13")
.ChartType = xl3DPieExploded
.SetElement (msoElementDataLabelOutSideEnd)
End With

Gran blog

Te agradezco mucho la ayuda!!!!

Alondra Grijalva Gonzalez dijo...

Disculpa he usado tu codigo tal y como esta ahi, pero me marca este error en amarillo!

objWord.Documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0

a que se debe? es un error 5174, tengo los documentos en la misma carpeta y ubicacion.

Juan Pablo Torres dijo...

Gracias Jairo por tus comentarios. En Excel casi todo es posible pero todavía no estamos familiarizados con las versiones mas recientes que aun tienen mas posibilidades.

Alondra, revisa el path del archivo en la función. Hay un problemita de una barra por ahi "/", faltante.
Salugos y gracias.

Andres Gomez dijo...

Buenas tardes como soluciono el error 5174 serian tan amables de indicarme ya hize de todo me fije en la \ que hacia falta pero en office 2013 no funciona , solicito de su ayuda por favor , muchas gracias

Juan Pablo Torres dijo...

Hola, cómo estas! Gracias por tus comentarios!
Sino es ese problema, puede ser de ubicación de los archivos o la extensión. Recuerda que es por un lado un archivo de excel y por el oro una plantilla de word. Son varias cosas a tener en cuenta sino es un error del código propiamente dicho.
Esperamos tus comentarios.
Saludos

Ysrael Araya dijo...

Estimados,

Junto con saludar, les pido me puedan ayudar en la macro para pasar datos de Excel a Word. Al ejecutar la macro aparece el error '6234' en tiempo de ejecución: No es un nombre de archivo válido. Revisé el Path, los dos archivos juntos en la misma carpeta, y el word en planilla de Word. La verdad no sé qué puede ser.

Espero puedan ayudarme. Saludos.

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, habría que ver que errores te tira y en el momento. Seguramente es algo en el código. Esos errores que están en los comentarios son los mas comunes. Puede ser que este mal la extensión, que no utilices un archivo de plantilla, entre otros. Hay que probar y revisar.
Saludos

Erika violeta Decaro dijo...

Hola que tal! Me gusto mucho como funciona la macro solo que tengo un pequeño problema, no me encuentra el archivo al ejecutar la macro, he revisado la ubicación etc, pero me da error en la linea

objWord.documents.Add Template:=wArch, NewTemplate:=False, DocumentType:=0

Mis dos archivos se encuentran en la misma carpeta, por lo que no se por que me aparece el error. Me dice lo siguiente:

Run-time error 5174
Sorry, we couldn't find your file. Is it posible was moved, renamed or delated?

END DEBUG HELP



Si puedes ofrecerme alguna idea de que puede ser te lo agradezco! saludos

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Entendemos tu frustración pero es común esos errores, tienes que revisar el código y seguir los lineamientos que dimos. También revisa los comentarios.
Tienes que revisar que el archivo de word sea una plantilla, luego que en el excel tanto en el código como en las celdas este bien el nombre y ubicación de archivos, además de la ubicación y tenga la correcta sintaxis. Eso es todo. Lo vas a lograr.
Esperamos tus comentarios.
Saludos

Israel Guerrero dijo...

Muchas gracias excelente aplicación, los que tienen el problema 5174 , la solución es sencilla solo revisen su codigo .

Al entender como funciona la macro encontre la solución.


Saludos amigos

Juan Pablo Torres dijo...

Muchas Gracias por los comentarios!
Saludos

Stefany Moran dijo...

Hola! cuando lo practique por primera vez me funciono todo, pero ahora en un nuevo macro me sale el error 424 en esta parte:

For i = 1 To Hoja6.Range("c1").Value

Y genera un documento de word pero sin reemplazar los datos.

Ojala puedas ayudarme, gracias!