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.