PDA

Vollständige Version anzeigen : Google Übersetzer nutzen aus VBA via Internet Explorer


JPA
19.01.2011, 20:43
Der Google Übersetzer Dienst wird immer besser. Daher die Idee diesen automatisiert mit VB/VBA zu nutzen.
Voraussetzungen sind: Verbindung zum Web und Internet Explorer.
Hier die Prozedur:

Public Function TranslateByGoogle(OrigineText As String, _
LangCodeFrom As String, _
LangCodeTo As String, _
TranslateText As String, _
Optional UniCodeID As Long, _
Optional TimeOutSeconds As Integer = 3, _
Optional ErrSilent As Boolean = False) As Boolean

'Copyright by Jean Pierre Allain

Dim ieOBJ As Object, WaitTime As Date

' Google Webseite
Const WebSite As String = "http://translate.google.com"

' Fehlerbehandlung
On Error GoTo ErrHandler
If Len(OrigineText) > 0 And Not LangCodeFrom = LangCodeTo Then
' IE Objekt (Instanz) erstellen
Set ieOBJ = CreateObject("InternetExplorer.Application")

' Webseite mit Parameter aufrufen
ieOBJ.Navigate WebSite & "/?sl=" & LangCodeFrom & _
"&tl=" & LangCodeTo & "#" & LangCodeTo & "|" & _
LangCodeFrom & "|" & OrigineText

' TimeOut festlegen
WaitTime = Now + TimeValue("00:00:" & TimeOutSeconds)
On Error Resume Next
Do
' Google-Ergebnis auslesen
TranslateText = ieOBJ.Document.getElementById("result_box").innerText
If Now() >= WaitTime Then Exit Do
Loop While TranslateText = ""
On Error GoTo ErrHandler

' Ergebnis auslesen (Überstzung)
If Len(TranslateText) > 0 And Not TranslateText = OrigineText Then
' Übersetzung ggf. in angegebene Landessprache konvertieren
If UniCodeID <> 0 Then
TranslateText = StrConv(TranslateText, vbUnicode, UniCodeID)
End If

TranslateByGoogle = True
End If
End If

ExitProc:
On Error Resume Next
' Objekte zerstören
ieOBJ.Quit
Set ieOBJ = Nothing
Exit Function

ErrHandler:
If Not ErrSilent Then
MsgBox Err.Description, vbCritical, Err.Number
End If
Resume ExitProc
End Function

Dim Result As String

' Sprach-Codes müssen als ISO-Ländercode übergeben werden
' Bsp.: Deutsch = DE
' Englisch = EN
' Französisch = FR
' Polnisch = PL
' usw.
If TranslateByGoogle("Das war ja einfach!", "DE", "EN", Result) Then
MsgBox Result
End If


CU
JPA

Inti31
20.01.2011, 16:02
"Das war ja einfach!" - Top!
Sehr anschaulich und sehr fein einbaubar.

...Aber erhrlicherweise... - so gut ist der G-Übersetzer nun auch wieder nicht.
Hab mir gerad mal ein paar headlines von BBC übersetzen lassen - ähem...

Gruß Inti31

JPA
20.01.2011, 16:26
ok, aber für technische übersetzungen wie "Datei öffnen" & co ist es schon mal ein erstes ergebnis womit man was anfangen kann.
VG
JPA

FW
25.01.2011, 14:44
... die Qualität der Google-Übersetzung steht ja nun in keinem Zusammenhang mit der Qualität des hier vorgestellten Codes - und der ist gut und zeigt auch gut, was man/frau nicht alles mit VBA machen kann...

Inti31
26.01.2011, 14:22
... die Qualität der Google-Übersetzung steht ja nun in keinem Zusammenhang mit der Qualität des hier vorgestellten Codes ...
Was ich auch nicht behauptet habe. Der Code ist super. Meine Antwort war diesbzgl. auch unmissverständlich.

Dimu
28.07.2016, 15:59
Hallo,

ich krame diesen Thread mal wieder vor.
Ich habe diesen Code in meine Datenbank eingebaut. Es passiert folgendes
Der zu übersetzende Text wird nach dem öffnen des Internetexplorers auch in die richtig Box eingefügt. Ich habe den IE mal sichtbar gemacht um zu sehen was geschieht. Mein Problem ist nun das die mit der URL mitgebene Sprache in meinen Fall Schwedisch nicht eingestellt wird. Diese bleibt auf Englisch stehen und wird dadurch nicht übersetzt. Klicke ich jetzt auf Schwedisch ist die Übersetzung sofort da.

Vielen Dank im vorraus!

Achso: wenn ich mit diesen Code von Englisch nach X Sprache übersetze funktioniert es einwandfrei!

JPA
29.07.2016, 14:20
Welchen LangCode für 'schwedisch' hast du benutzt?
Ist der Korrekt?
Gruß
JPA

Dimu
01.08.2016, 12:12
Erst mal Entschuldigung, das ich mich erst jetzt melde!

Also der Langcode den ich für schwedisch benutze ist "SWE"

Müßte eigentlich korrekt sein, oder?

JPA
01.08.2016, 13:26
Nee, es ist: SV
(Groß geschrieben).
Gruß
JPA

Dimu
01.08.2016, 15:22
Vielen lieben Dank, für die Hilfe!

Vielleicht könnte man ja die korrekten LangCodes hier als Tabelle einfügen!

Schöne Grüße aus Weißenfels an der Saale!

Faultier_1982
08.12.2018, 08:47
Hallo

das hört sich sehr gut an, habe den Code auch gleich in eine Excel-Datei kopiert.... Leider funktioniert es nicht und ich weiß nicht, was ich ändern muss....

gibt es da vielleicht eine kleine Hilfestellung....

Gruß Faultier

Faultier_1982
08.12.2018, 10:05
Tach

ich habe mal angefangen, den Code zu vereinfachen.
Das ist bis jetzt mein Resultat:

Sub Google_Test()

Dim WaitTime As Date

Dim LangCodeFrom As String
Dim LangCodeTo As String
Dim OrigineText As String
Dim TranslateText As String

LangCodeFrom = "de"
LangCodeTo = "en"
OrigineText = "Hello"

Dim ieOBJ As Object
Set ieOBJ = CreateObject("InternetExplorer.Application")

' Webseite mit Parameter aufrufen
ieOBJ.Navigate "http://translate.google.com/?sl=" & LangCodeFrom & "&tl=" & LangCodeTo & "#" & LangCodeTo & "|" & LangCodeFrom & "|" & OrigineText

ieOBJ.Visible = True

Call Application.Wait(DateAdd("s", 5, Time))

' Google-Ergebnis auslesen
TranslateText = ieOBJ.Document.getElementById("result_box").innerText

ieOBJ.Quit
Set ieOBJ = Nothing

End Sub




Leider bekomme ich immer hier die Fehlermeldung (Laufzeitfehler 424 Objekt erforderlich)

TranslateText = ieOBJ.Document.getElementById("result_box").innerText


Weiß jemand woran das liegen könnte?

Gruß Faultier

ebs17
08.12.2018, 10:29
Das Code-Archiv ist eine Sammelstelle für fertige und (in hinreichenden Grenzen) erprobte und ausgereifte Lösungen, quasi direkt kopier- und nachnutzbar. Somit ist hier nicht der geeignete Ort, Deine eigenen Versuche auszuleben. Dazu solltest Du mit Verweis auf dieses Thema ein normales Forum benutzen.

ich habe mal angefangen, den Code zu vereinfachen
Man könnte vermuten, eher erwarten, dass Angaben aus dem Internet nicht immer augenblicklich zur Verfügung stehen. Da würde man das Entfernen einer dies berücksichtigenden Warteschleife als glattes Eigentor bewerten.

maniteni
08.01.2019, 21:01
Ich bekomme immer an der Stelle .getElementById("result_box").innerText die Fehlermeldung 424.

Wie kann ich diesen Fehler beheben. Welche DLL(Verweise) wird hier benötigt?