Traducir celdas en Excel usando VBA

Hay veces que nos toca traducir reportes con muchas filas de información, y usar el traductor en google, no es la solución ya que nos pasaríamos toda una vida copiando y pegando, así hasta el fin de los tiempos. Para lo cual les traigo un código que es de solo copiar y pegar para poder traducir una gran cantidad de celdas desde Excel usando VBA.

Supongamos que tenemos un reporte como el que se ve en la imagen.

Para poder traducirlo necesitariamos copiar celda por celda en el traductor de google, y así nos podemos pasar mucho tiempo, más cuando tenemos reportes de cientos de filas. Por lo cual hay un código VBA que nos puede salvar el día.

Function Traducir(texto_a_traducir As
 String,
 Optional CodSalida As
 String
 =
 "es")
 As
 String
 

‘Emplearemos el traductor de Google a través de Internet Explorer…

‘OJO!!! MUY IMPORTANTE: Debe estar seleccionada la Referencia > Microsoft Internet Control

Dim IE As
Object, i As
Long

Dim IdiomaOriginal As
String, IdiomaSalida As
String

Dim texto_traducido As
String, Txt_Limpio

‘Abrimos Internet Explorer

Set IE = CreateObject(“InternetExplorer.application”)

‘Elegimos el idioma original del texto a traducir

‘lo dejamos en Auto para que el sistema detecte cuál es…

IdiomaOriginal =
“auto”

‘Elegimos el idioma al que queremos traducirlo

‘en este caso al español (es) Ver listado códigos de idioma en el post.

IdiomaSalida = CodSalida

‘hacemos invisible el navegador

IE.Visible =
False

‘Abrimos la web del traductor de Google

IE.navigate http://translate.google.com/#”
& IdiomaOriginal &
“/”
& IdiomaSalida &
“/”
& texto_a_traducir

‘trabajamos sobre el traductor…

Do
Until IE.ReadyState =
4

DoEvents

Loop

Application.Wait (Now + TimeValue(“0:00:5”))

Do
Until IE.ReadyState =
4

DoEvents

Loop

‘Obtenemos el texto traducido del campo de Google ‘Result_box’

‘sería algo así: <span class=”hps”>texto traducido</span>

‘y lo dejamos limpio del código o etiquetas de html

‘además con Split conseguimos separarlo en una matriz de valores.

Txt_Limpio = Split(Application.WorksheetFunction.Substitute(IE.Document.getElementById(“result_box”).innerHTML,
“</SPAN>”,
“”),
“<“)

‘en este paso recorremos los elementos de la matriz de elementos resultantes de la traducción

‘y lo recomponemos en una frase (si fuera el caso)

For j = LBound(Txt_Limpio)
To UBound(Txt_Limpio)

texto_traducido = texto_traducido & Right(Txt_Limpio(j), Len(Txt_Limpio(j))
InStr(Txt_Limpio(j),
“>”))

Next

‘cerramos Internet Explorer

IE.Quit

‘devolvemos el texto traducido a la hoja de cálculo

Traducir = texto_traducido

End
Function

Como dije antes, este código es de copiar y pegar, bueno si lo quieren entender allí están los comentarios.

Ya copiado en el VBA aparecerá en el Excel como una fórmula más.

La forma correcta de llenarlo si necesitamos que convierta el texto en inglés es el siguiente.

Ya traducida la primera línea podemos copiar la formula a las demás celdas, como cualquier fórmula de Excel.

Es casi mágico. J

Acá dejo el listado de los idiomas que se pueden usar y que deberían de poner dependiendo del idioma.

Hay muchos más, con estos son suficientes, si no INVESTIGUEN.

Descarga el código fuente.

Anuncios

Responder

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 )

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 )

Google+ photo

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

Conectando a %s