Hola a todos:
Hace unos días estaba trabajando con unos textos en inglés, nada relacionado con Excel, sino con unos apuntes de teoría política que me interesaban bastante. Lo cierto es que tuve que recurrir varias veces al traductor de Google, dado que no recordaba el significado concreto de algunas expresiones.
Esto me dio una idea, ¿por qué no confeccionar una función que se sea capaz traducir el valor que contenga una celda en Excel, algo así como “TraducirV”?, pues claro que sí, y es bastante sencillo.
Para hacer nuestro trabajo, vamos a utilizar la siguiente función que obtiene del traductor de google la traducción de la palabra que queremos traducir:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Function TRADUCIRV(ByVal palabra As String, input_word As String, output_word As String)
'Declaramos variables
Dim RESPUESTA As String
Dim ie As Object
'Creamos aplicación (internet explorer)
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate ("http://translate.google.com/?") & "hl=es#" & input_word & "/" & output_word & "/" & palabra
'vamos a ralentizar la macro varios segundos
For i = 1 To 6
Sleep 500
Next i
'Obtenemos la traducción, extrayendo el texto por ID
RESPUESTA = ie.Document.getElementsByClassName("result-shield-container tlid-copy-target")(0).innerText
TRADUCIRV = RESPUESTA
ie.Quit
End Function
Con esto ya tenemos en nuestro libro Excel una nueva función, denominada “TRADUCIRV” 🙂
la sintaxis de la función es la siguiente:
=traducirv(texto a traducir;idioma actual;idioma al que queremos traducir)
Por ejemplo, si queremos traducir del español (“es”) al inglés (“en”), esta sería la fórmula:
=traducirv(A2;"es";"en")
Y podemos traducir cualquier texto a cualquier de los idiomas que aparecen en el tractor de Google, por ejemplo, si traducimos “nadie sabe de lo que es capaz hasta que lo intenta” al georgiano (“ka”), la fórmula sería =traducirv(A2;”es”;”ka”) y el resultado sería este: არავინ იცის, რა მას შეუძლია, სანამ ის ცდილობს
En al archivo os dejo los nombres y las abreviaturas de los idiomas del traductor de google, por si queréis probar algunos idiomas.
En la función, cuando hagáis referencia a los idiomas, debéis colocar las abreviaturas en minúsculas y entre comillas dobles, de lo contrario obtendréis un error. (En la función también podéis hacer referencia a la celda que contiene la abreviatura y no tener que escribirla, en ese caso irá sin comillas.)
Otro asunto importante es que algunos idiomas, dependiendo de la versión de Excel puede que no se muestren correctamente, por ejemplo, el Birmano, en excel 2010 no se muestra, sin embargo en Excel 2016 sí. De hecho, es en 2016 donde se muestran todos los idiomas correctamente.
Pues esto ha sido todo, una pequeña función para poder traducir desde nuestra hoja Éxcel un texto a multitud de idiomas.
Descarga el archivo de ejemplo pulsando en: FUNCIÓN PARA TRADUCIR TEXTO EN NUESTRA HOJA EXCEL
muchas gracias. es una aplicación estupenda!
Me gustaMe gusta
Muchas gracias Diego!.
Saludos 🙂
Me gustaMe gusta
Segu hombre, mil gracias por este *tutorial, me ha sido de mucha ayuda
Quisiera preguntarte algo, cómo puedo hacer para que al abrir x cantidad de archivos y querer emplear la fórmula de traducción, no tenga que abrir el original VisualBasic, copiar la función, y pegarla en el programador del nuevo archivo de excel?
Hombre te agradezco mucho tu atención y quedo pendiente a tu respuesta, un saludo.
Me gustaMe gusta
Hola Yeisson Diaz:
Instala la función como un complemento: https://excelforo.blogspot.com/2016/05/vba-como-crear-nuestro-propio.html
Te dejo el enlace al foro de Ismael Romero, donde lo explica muy bien.
Saludos.
Me gustaMe gusta
Segu, buenas noches
Al instala la función como complemento tal como lo explica el enlace, lo que yo entiendo es copiar el código XML del traductor y ponerlo en el Custom UI Editor pero me arroja un error, te agradezco por favor orientarme al respecto.
Me gustaMe gusta
Hola YEisson:
Intenta como se indica aquí. Yo lo he probado y funciona perfectamente.
Pasas el archivo a Xlsam (complemento), lo guardas en la carpeta que quieras, y luego vas a Archivo > Opciones y seleccionas Complementos. Luego pulsas en IR y en Examinar seleccionas el archivo. Al aceptar te debería aparecer como complemento.
Y funcionaría correctamente.
Aquí tienes un tutorial de ejemplo:
https://blogs.itpro.es/exceleinfo/2015/04/16/instalar-exceleinfo-add-in-o-cualquier-complemento-de-excel/
Me gustaMe gusta
ES ACOJONANTE , MUCHAS GRACIAS
Me gustaMe gusta
Gracias Guillermo!
Me gustaMe gusta
Genial
Me gustaMe gusta
hola, es genial me esta ayudndo mucho tu funcion pues tengo bastantes cosas que traducir en excel, lo que si suele dar fallos y ser bastante lenta incluso cuando tiene muchas celdas que traducir se bloquea excel y se cierra perdiendo todo lo hecho que no se haya guardado… habria alguna mejora o cmabio que se puediera hacer en la formula para que mejore su funcionamiento??, perdona por mi ignorancia pero soy muy novato en esto… ante todo muchas gracias por facilitarme la vida…
Me gustaMe gusta
Hola Migue:
Sé que a veces esa función puede dar problemas, se debe al tiempo de respuesta entre que se hace la petición de información y el dato que envía google translate (tiene difícil solución).
Investigaré de todas formas si existe un API que no sea de pago al que poder solicitar estos datos.
Saludos.
Me gustaMe gusta
muchas gracias… de todos modosgenial tu trabajo
Me gustaMe gusta
Genial. Lo probé y Funciona al 100%
Me gustaMe gusta
Muchas gracias. Me alegro que te haya sido útil. Saludos.
Me gustaMe gusta
Hola Segu. Tengo una dificultad que no entiendo, seguramente será por que no tengo sólidas bases de Excel. Me he bajado tu excel y en la hoja en la que está la fórmula funciona sin problemas. Pero no funciona si se trata de utilizar desde otra hoja. Da un error de referencia. Si creo la función en otro archivo tengo el mismo problema. ¿Sabes porque puede ser?
Gracias de antemano,
jorge
Me gustaMe gusta
Hola Jorge:
La función funciona debería funcionar correctamente en el mismo archivo y sus hojas. Pero en otro archivo es necesario que tenga un módulo de VBA con la función.
Descartando eso, debería funcionar correctamente.
Saludos.
Me gustaMe gusta
Hola Segu,
Encontré el problema. Como te decía era un problema de principiante. La cuestión es que yo tengo el ordenador configuradon en idioma inglés con formato de número de Irlanda. Y con esta configuración donde se usa en excel en castellano . yo uso , y cuando se usa en las fórmulas ; yo uso ,
Así que mi formula es con comas. Eso era todo.
Gracias,
Jorge
Me gustaMe gusta
Gracias a ti Jorge, por comentar.
Saludos.
Me gustaMe gusta
Me pasaba igual que a ti por tener una versión en inglés pero, leyendo tu aporte lo apliqué y funciona correctamente… Muchas gracias por el aporte de este post y de todos los que han colaborado con sus comentarios…
Me gustaLe gusta a 1 persona
Me ha funcionado una vez. luego nunca más funcionó. ¿Podrá ser que el traductor esté bloqueando este tipo de peticiones?
Me gustaMe gusta
Es posible , pero no lo puedo verificar. Además actualmente existe un API para traducir pero de pago en Google, el problema es que no se pueden bajar los datos en XML o Json utilizando otro método mucho más rápido y el acudir a I. Explorer ocasiona fallos en la descarga de los datos (tiempo de respuesta, fundamentalmente).
Saludos.
Me gustaMe gusta
hola Segu, mi nombre es David, estoy utilizando tu funcion y es de mucha utilidad.. pero he tenido un inconveninte, y es que yo la utilizo para traducir textos con Porcentajes, por ejemplo “100% Algodon” o “90% Algodon 10% Poliester”, pero al momento de poner el simbolo de porcentaje, no aparece la traduccion, ni si quiera el texto.
crees que me puedes ayudar para solocionar el problema?
o si alguien de los que la estan usando tiene la respuesta me pueden ayudar?
por favor!
gracias! 🙂
Me gustaMe gusta
Hola David:
Creo que el % crea problemas a la hora de enviar la solicitud al traductor.
Una solución sencilla es utilizar el remplazar para cambiar el % por ” por ciento”.
La forma de hacerlo es cambiar incluir el replace en la macro, en la parte de la url:
ie.navigate ("http://translate.google.com/?") & "hl=es#" & input_word & "/" & output_word & "/" & Replace(palabra, "%", " por ciento")
Así te funcionará. Saludos.
Me gustaMe gusta
Hola, no he trabajado con macros, pero al pegar el código me arroja una ventana de error que dice: “only comments may appear after End Sub, End Function, or End Property. Y al mismo tiempo me subrralla la primera línea:
Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Por qué será esto?
Me gustaMe gusta
Hola Nat:
En el archivo de descarga te funciona correctamente?. si lo hace, es muy probable que hayas pegado la información de forma incorrecta. Revísalo y me comentas.
Saludos.
Me gustaMe gusta
hola muy buena la informacion, pero me el campo donde se supone que deberia mostrar la traducion esta en blanco , traduce pero no muestra lo que necesito. me podrias ayudar con esto por favor.gracias
Me gustaMe gusta
Hola Robinson:
En algunas ocasiones, por el tiempo de respuesta entre la solicitud y la respuesta de google y también la cantidad de datos a traducir, puede que el resultado de la función sea nulo. Intenta repetir el proceso de consulta y verifica que lo realiza correctamente.
Saludos.
Me gustaMe gusta
Tras analizar tu código he visto que se puede sustituir la división que hago del HTML, mucho más simple.
Reemplazar con este trozo el existente:
Me gustaMe gusta
Pingback: Translate
hola se ve interesante, me gustaría saber si aun funciona, he descargado el archivo pero no hace nada, algo ha cambiado?
Me gustaMe gusta
Hola johanave:
Tengo que revisar el código y actualizarlo con otro método. Además creo que google ha realizado modificaciones en su código.
Gracias por avisar.
Saludos.
Me gustaMe gusta
Pingback: Translate |
Hola, serias tan amable de actualizar el Metodo. saludos y gracias
Me gustaMe gusta
Hola Christian:
En cuanto tenga un momento lo intento, aunque es posible que la alternativa sea pasar por el API (de pago).
Saludos.
Me gustaMe gusta
Está actualizado, prueba a descargarlo, debería funcionarte.
Saludos
Me gustaMe gusta
Hola Segu, me ha ilusionado mucho todo, pero no puedo hacerlo funcionar
me gustaría, me puedas guiar aunque sea por API (pago), vivo en Argentina.
de lunes a viernes hago un resumen de titulares mas importante financiero y agropecuario de los medios de argentina, y los hago en un excel, lo publico gratuitamente en twitter. Pero me interesa poder hacer una publicación con traducción automática
Me gustaMe gusta
hay otra opción que me ha funcionado de pronto a usted también le sirva
buscas en google “google sheets” abres una hoja de calculo y colocas la siguiente funcion en la celda B2 =GOOGLETRANSLATE(A2,”en”,”es”)
lo que hace es que traduce el contenido de la celda A2 de ingles a español
me esta funcionando
Me gustaMe gusta
Hola Javier:
Finalmente he actualizado la función, ahora captura el dato por ClassName y las pruebas que he realizado van correctamente.
Debería funcionarte perfectamente, ya lo puedes descargar.
Saludos.
Me gustaMe gusta
Gracias, probé y esta funcionando, una consulta de pronto me puedes orientar, que debo hacer para manejar archivos de excel mayor a 100 megas sin que se colapse tanto? tengo un core i7 con 4 de ram y ssd win 10 y office 2013 pero archivos mayores a 60 megas veo que se cuelga, puedes orientarme que debo mejorar?
Me gustaMe gusta
Hola johanave:
Deberías verificar el tipo de formulación que tienes en el archivo y también el tipo de datos. Determinadas fórmulas hacen que los archivos “pesen demasiado”. Por ello, intenta programar lo máximo posible y elimina hojas o datos que no uses.
Quizás ampliar un poco de memoria te ayudase.
Saludos.
Me gustaMe gusta
de momento ya lo he solucionado, gracias
Me gustaMe gusta
Enhorabuena por el código,
pero me gustaría saber el por qué solamente me funciona una vez el código y luego simplemente deja de funcionar…
Creo que me está explotando la cabeza… 😦
Me gustaMe gusta
Hola Duras:
La macro tiene un retardo de tiempo para que se complete la petición, intenta no arrastrar la fórmula. Está pensado y programado para traducir en una misma celda o aplicándola en otras copiando y pegando.
Saludos.
Me gustaMe gusta
Hola, primero queria agradecerte por el trabajo, la cosa es que descargue tu archivo y en una pc me funciona muy bien, sin embargo en otra no, como resultado me da #¡VALOR!, la verdad no se a que se debe, ya probe a aumentar el tiempo de espera en el bucle y nada, espero me puedas ayudar, gracias
Me gustaMe gusta
Hola Harold:
Pues no sé a que se puede deber, quizás a la versión de internet explorer, la memoria del sistema, etc. No sabría decir cual puede ser la razón.
Saludos.
Me gustaMe gusta
Hola Segu,
probe la macro y me genera un error, luego descargue tu archivo y la formula se daña y me sale este error
“Compile error:
the code in this project must be updated for use on 64-bits systems.
Please review and update Declare statement and then mark them with the PtrSafe attribute.”
y me señala la primera linea en la palabra Sub
me podrias orientar por favor que debo hacer en la macro.
Gracias
Me gustaMe gusta
Hola Javier:
Eso sucede porque estás trabajando con Office 64 bits, y la macro está preparada para 32 bits.
Intentalo sustituyendo la primera línea de código por esta:
Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Saludos.
Me gustaMe gusta
Muchas Gracias Compa, con ese cambio que realice quedo
Me gustaMe gusta
HOLA BUEN DIA ANTES QUE NADA PERMITE AGRADECER INFINITAMENTE EL APOYO QUE BRINDAS Y PREGUNTAR QUE COSTO TIENE O SI ES VOLUNTARIO EL APOYO, UNA VEZ DICHO ESTO MI DUDA ES A SIGUIENTE:
E INSTALDO EL CODIGO Y FUNCIONO MUY BIEN DERO DE PROTO A DEJADO DE FUNCIONAR, ME PARECE #VALUE! Y #NAME?
MUCHAS GRACIAS DESDE MEXICO
Me gustaMe gusta
Hola Omar:
El error puede surgir por los tiempos de respuesta entre la consulta realizada a google y el dato que envía a Excel. Intenta ejecutar de nuevo el código.
Saludos.
Me gustaMe gusta
El mismo error que tiene OMAR LONA, también me sucedió la macro dejo de funcionar, te ad
Me gustaMe gusta
Hola en primer lugar gracias por el aporte, bueno baje t archivo y me sale un error de formula, “#¡VALOR!” y no le hayo solucion a que crees que se deba esto
Me gustaMe gusta
Hola Harold:
Acabo de descargar el archivo y funciona perfectamente. Al tratarse de una función que utiliza internet explorar puede que genere errores cuando se recibe la información. Por otra parte si estás utilizando un sistema de 64 bits, deberías cambiar la primera línea por esto:
Declare PtrSafe Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Saludos.
Me gustaMe gusta
Hola Segu,
En verdad muchas gracias por tu aporte, es excelente esta funcion. Tengo un problema, copie el codigo y descargo tu archivo, pero en ambos al terminar la funcion me aparece #¡Valor! y de inmediato me abre una ventana de internet explorer con la respectiva traduccion, pero no me muestra la traduccion en la hoja de excel. Me podrias ayudar por favor. Gracias!!!
Saludos desde Colombia
Me gustaMe gusta
Hola Gabriel:
Desconozco cómo es posible que la macro muestre una web con la traducción.
En cuanto al error, se debe al tiempo de espera entre consulta y recepción. en la macro el retardo es de 6 segundos, quizás deberías subir ese número.
Saludos.
Me gustaMe gusta
Hola buenas tardes, de ante mano gracias por tu apoyo, yo aun no puedo utulizar tu funcion y espero me puedas ayudar, al ejecutar me envia envia error y al entrar al codigo me envia error sobre “kernel32” y me dice que se esperaba un valor sobre la cadena.. puedes orientarme por favor?
Me gustaMe gusta
Hola Juan:
Revisa los comentarios y respuestas en este post, ya he resulto esa consulta varias veces. Saludos
Me gustaMe gusta
Funcionando perfectamente al día 20 de septiembre 2019, muchas gracias por el aporte. ( sistema 64 bits, excel 2016, hp i3.)
Saludos desde el valle de México.
Me gustaMe gusta
hola me aparece un error no se como solucionarlo esto me parare en la fomula #¡VALOR!
Me gustaMe gusta
Hola Edu:
No sé cuántos registros o filas estás traduciendo, pero la función, al realizar una consulta vía internet explorer, necesita un tiempo para resolver la respuesta, cuando aparece el error es que los datos han tardado demasiado tiempo en ser recibidos.
No existe una solución a este problema, solo que pruebes con pocos datos o todo el texto incluido en una celda. Saludos.
Me gustaMe gusta