I'm trying to convert other languages to English using auto detect by triggering the below code.
Sub transalte_using_vba()
Dim ie As Object, i As Long
Dim inputstring As String, outputstring As String, text_to_convert As String, result_data As String, CLEAN_DATA
Set ie = CreateObject("InternetExplorer.application")
inputstring = "auto"
outputstring = "en"
text_to_convert = Sheet3.Range("A2")
'open website
ie.Visible = False
ie.navigate "http://translate.google.com/#" & inputstring & "/" & outputstring & "/" & text_to_convert
Do Until ie.ReadyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:5"))
Do Until ie.ReadyState = 4
DoEvents
Loop
CLEAN_DATA = Split(Application.WorksheetFunction.Substitute(ie.Document.getElementById("result_box").innerHTML, "</SPAN>", ""), "<")
For i = LBound(CLEAN_DATA) To UBound(CLEAN_DATA)
result_data = result_data & Right(CLEAN_DATA(i), Len(CLEAN_DATA(i)) - InStr(CLEAN_DATA(i), ">"))
Next
Sheet3.Range("B2") = result_data
ie.Quit
MsgBox "Done", vbOKOnly
End Sub
However i'm facing Runtime error 424 object required in line CLEAN_DATA = Split(Application.WorksheetFunction.Substitute(ie.Document.getElementById("result_box").innerHTML, "</SPAN>", ""), "<")
What is wrong with the code?
This code is working bit slow.. as I need to work on bulk data more than 70K is there any quick way to do this?
In my system I have google chrome as default browser and can we use it for translation, which may help to run the script faster?
A solution based on Internet Explorer is very slow by definition. Please, try the next function:
It can be tested in this simple way:
Or to translate the cells value in a range:
In order to obtain a more accurate translation, you can use (instead of "auto"): "es" for Spanish, "ru" for Russian, "ro" for Romanian, "nl" for "Duch" etc. You can find a language abbreviation by looking into Google Translate source and searching for 'English'. You will find an area where all possible language appear with their abbreviation to be used...