FUNCIÓN PARA TRADUCIR TEXTO EN NUESTRA HOJA EXCEL

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: არავინ იცის, რა მას შეუძლია, სანამ ის ცდილობს

funcion-para-traducir-texto-en-nuestra-hoja-excel

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

 

Anuncios

47 pensamientos en “FUNCIÓN PARA TRADUCIR TEXTO EN NUESTRA HOJA EXCEL

  1. 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 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 gusta

  2. 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 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 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 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 gusta

  3. 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 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 gusta

  4. 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 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 gusta

  5. 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 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 gusta

  6. 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:

            'oIExplorer.Visible = True
            strHTML = oIExplorer.Document.getElementById(strTranslationElementID).innerText
            'aCleaData() = VBA.Split(VBA.Replace(strHTML, "</textarea>", ""), "<")
            
            'For lngLoop = LBound(aCleaData) To UBound(aCleaData)
            '    strTempOutput = strTempOutput & VBA.Right$(aCleaData(lngLoop), VBA.Len(aCleaData(lngLoop)) _
                                - InStr(aCleaData(lngLoop), ">"))
            'Next lngLoop
    
            getTranslation = strHTML
    

    Me gusta

  7. Pingback: Translate

  8. Pingback: Translate |

  9. 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 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 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 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 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 gusta

  10. 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 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 gusta

  11. 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 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 gusta

  12. 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 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 gusta

  13. 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 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 gusta

¿Te ha gustado?, Realiza un comentario.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.