Google Translate by Internet Explorer Automation

This VBA Macro Code translates text using Google Translate by automation of Internet Explorer controlled through Excel.

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.  

The entire VBA/Excel program is available for download at the bottom of this page, enjoy!

 

 

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


 

 

 

Download excel file! Google_Translate_Internet_Explorer_Automation.xls

 
Comments (7)
Bit More help
7 Thursday, 08 July 2010 12:27
Anish
is it possible to upload a file with list of values in column A to google translator and get the result back in excel, using VBA ??

Thanks
Autodetect languages
6 Sunday, 06 June 2010 13:12
Adam
Hi there does this work with autodetect languages too?
Google Translate by Internet Explorer Automation
5 Friday, 19 March 2010 08:20
Deepak
Thanks for the wonderful macro,

I do have small query about this.

I noticed that macro do not always select source and target languages from XLS cells. Once it is set to particular language pair then it will only translate it into same language pair although you have specified different language pairs.

Could you please do something about this?

Thanks!
Great little tool - slight update required
4 Monday, 14 September 2009 01:49
Mark Freund
Thanks for posting the tool. It has probably saved me a few days effort in writing and debugging my own. I had to make a few minor changes to get it working + it looks like a couple of the language codes have changed. See below for code mods..

From
..elements(5).Value = to_language_code

To
..elements("sl").Value = to_language_code

and
From
..elements(4).Value = from_language_code

To
..elements("tl").Value = from_language_code

also added this
Range("f10").Offset(rad, Column).select

immediately after
If Range("f10").Offset(rad, Column).Value = tom Then

to keep a watch on progress.

Thanks again!!
Mark
Translate
3 Wednesday, 17 June 2009 17:52
King
Have tried to download the file and run that instead of just copy the code?

Regards,
Admin
Google Translate by Internet Explorer Automation
2 Monday, 15 June 2009 09:41
franck
my adress is delaban@yahoo.fr
Google Translate by Internet Explorer Automation
1 Monday, 15 June 2009 09:39
FRANCK
HELLO

I have an excel file I'd like to translate from french into english
I don't understand how to do with your macro (bug messages, nothing runs)
could u help pls???
thanks

Add your comment

Your name:
Subject:
Comment: