This VBA Macro Code translates text using Google Translate by automation of Internet Explorer controlled through Excel.
Dim Google_Translate_Internet_Explorer_Automation As Object
Set Google_Translate_Internet_Explorer_Automation = CreateObject("InternetExplorer.Application")
Google_Translate_Internet_Explorer_Automation.Navigate "http://translate.google.com/translate_t#"
Google_Translate_Internet_Explorer_Automation.Visible = True
Wait_Between_Google_Translate_Cycles = Range("G1").Value
Column = 0
While Range("f9").Offset(0, Column).Value <> tom
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
to_language_code = Range("f9").Offset(0, Column).Value
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(5).Value = to_language_code
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
rad = 0
While Range("c10").Offset(rad, 0).Value <> tom
If Range("f10").Offset(rad, Column).Value = tom Then
from_language_code = Range("a10").Offset(rad, 0).Value
Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(4).Value = from_language_code
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
Google_Translate_Text = Range("c10").Offset(rad, 0).Value
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements("source").Value = Google_Translate_Text
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
Google_Translate_Internet_Explorer_Automation.document.getElementById("text_form").submit
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
dd2 = Google_Translate_Internet_Explorer_Automation.document.forms(1).elements(4).Value
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
Google_Translate_Variable1 = Replace(dd2, Chr(13), "")
Range("f10").Offset(rad, Column).Value = Google_Translate_Variable1
End If
rad = rad + 1
Wend
Column = Column + 1
Wend
Google_Translate_Internet_Explorer_Automation.Quit
Set Google_Translate_Internet_Explorer_Automation = Nothing
End Sub
Public Sub WaitSeconds(sek)
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + sek
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
End Sub
Explanation
The program automatically writes text from Excel into Internet Explorer and uses the Google Translate service to translate the text into desires language. It is possible to translate from and to many different languages, just change the language code and the program is set up accordingly. Today all the major languages are available using google translate. It is one of few services that enables translation of entire sentences not just words. The service is free of charge and can be executed through API. The exact technology used for the translation is not public. Google has started to translate entire web pages on the internet as well when using the google seach function.Code
Public Sub Google_Translate()Dim Google_Translate_Internet_Explorer_Automation As Object
Set Google_Translate_Internet_Explorer_Automation = CreateObject("InternetExplorer.Application")
Google_Translate_Internet_Explorer_Automation.Navigate "http://translate.google.com/translate_t#"
Google_Translate_Internet_Explorer_Automation.Visible = True
Wait_Between_Google_Translate_Cycles = Range("G1").Value
Column = 0
While Range("f9").Offset(0, Column).Value <> tom
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
to_language_code = Range("f9").Offset(0, Column).Value
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(5).Value = to_language_code
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
rad = 0
While Range("c10").Offset(rad, 0).Value <> tom
If Range("f10").Offset(rad, Column).Value = tom Then
from_language_code = Range("a10").Offset(rad, 0).Value
Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements(4).Value = from_language_code
Do While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Loop
Google_Translate_Text = Range("c10").Offset(rad, 0).Value
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
Google_Translate_Internet_Explorer_Automation.document.forms("text_form").elements("source").Value = Google_Translate_Text
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
Google_Translate_Internet_Explorer_Automation.document.getElementById("text_form").submit
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
dd2 = Google_Translate_Internet_Explorer_Automation.document.forms(1).elements(4).Value
While Google_Translate_Internet_Explorer_Automation.busy
Call WaitSeconds(Wait_Between_Google_Translate_Cycles)
Wend
Google_Translate_Variable1 = Replace(dd2, Chr(13), "")
Range("f10").Offset(rad, Column).Value = Google_Translate_Variable1
End If
rad = rad + 1
Wend
Column = Column + 1
Wend
Google_Translate_Internet_Explorer_Automation.Quit
Set Google_Translate_Internet_Explorer_Automation = Nothing
End Sub
Public Sub WaitSeconds(sek)
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + sek
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
End Sub
No comments:
Post a Comment