MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - Code Archiv
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 19.01.2011, 21:43   #1
JPA
MOF Koryphäe
MOF Koryphäe
Top Codebeispiel - Google Übersetzer nutzen aus VBA via Internet Explorer

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:

Code:

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
Code:

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

Geändert von JPA (19.01.2011 um 21:50 Uhr).
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.01.2011, 17:02   #2
Inti31
MOF User
MOF User
Standard

"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
Inti31 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 20.01.2011, 17:26   #3
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

ok, aber für technische übersetzungen wie "Datei öffnen" & co ist es schon mal ein erstes ergebnis womit man was anfangen kann.
VG
JPA
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 25.01.2011, 15:44   #4
FW
MOF Meister
MOF Meister
Standard

... 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...
FW ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.01.2011, 15:22   #5
Inti31
MOF User
MOF User
Standard

Zitat: von FW Beitrag anzeigen

... 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.
Inti31 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.07.2016, 16:59   #6
Dimu
Neuer Benutzer
Neuer Benutzer
Standard

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!

Geändert von Dimu (28.07.2016 um 17:02 Uhr).
Dimu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 29.07.2016, 15:20   #7
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Welchen LangCode für 'schwedisch' hast du benutzt?
Ist der Korrekt?
Gruß
JPA
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.08.2016, 13:12   #8
Dimu
Neuer Benutzer
Neuer Benutzer
Standard

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?
Dimu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.08.2016, 14:26   #9
JPA
Threadstarter Threadstarter
MOF Koryphäe
MOF Koryphäe
Standard

Nee, es ist: SV
(Groß geschrieben).
Gruß
JPA
JPA ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 01.08.2016, 16:22   #10
Dimu
Neuer Benutzer
Neuer Benutzer
Standard

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!
Dimu ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2018, 09:47   #11
Faultier_1982
MOF User
MOF User
Standard

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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2018, 11:05   #12
Faultier_1982
MOF User
MOF User
Standard

Tach

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

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)
Code:

TranslateText = ieOBJ.Document.getElementById("result_box").innerText
Weiß jemand woran das liegen könnte?

Gruß Faultier
Faultier_1982 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2018, 11:29   #13
ebs17
MOF Guru
MOF Guru
Standard

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.

Zitat:

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.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}:{12} <= geklammerte Zahlen sind Einzelthemen
Dein Dankeschön: DBWiki => Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.01.2019, 22:01   #14
maniteni
Neuer Benutzer
Neuer Benutzer
Standard error 424

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?
maniteni ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:27 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.