Worum geht’s?

Du hast in Excel eine Spalte mit Produktbeschreibungen, Kommentaren oder Supporttexten.
Alles auf Deutsch. Aber Du brauchst’s auf Englisch. Oder andersrum.

Kopieren in den Browser? Nein danke.
Also automatisieren wir das.
Direkt in Excel. Mit VBA. Und DeepL oder Google Translate.

Was brauchst Du?

  • Excel 2024 mit Makro-Unterstützung
  • API-Zugang zu DeepL oder Google Translate
  • Eine Spalte mit Texten
  • Einen leeren Bereich für die Übersetzung

DeepL vs Google

AnbieterVorteileNachteile
DeepLSehr gute SprachqualitätZeichenlimit in Free-Version
GoogleSchnell, viele SprachenStil weniger flüssig

Ich zeig Dir beide Varianten.
Du kannst wählen.

Beispiel: Spalte A enthält den Quelltext

Deutsch (Spalte A)Englisch (Spalte B)
Bitte senden Sie das Formular.Please send the form.
Die Lieferung erfolgt morgen.The delivery will arrive tomorrow.

DeepL per VBA

Funktion: DeepLTranslate

Function DeepLTranslate(text As String, fromLang As String, toLang As String) As String
    Dim http As Object
    Dim apiKey As String
    Dim url As String
    Dim postData As String
    Dim result As String

    apiKey = "deepl-api-key" ' Deinen API-Key hier eintragen
    url = "https://api-free.deepl.com/v2/translate"

    postData = "auth_key=" & apiKey & _
               "&text=" & URLEncode(text) & _
               "&source_lang=" & UCase(fromLang) & _
               "&target_lang=" & UCase(toLang)

    Set http = CreateObject("MSXML2.XMLHTTP")
    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        .send postData
        result = .responseText
    End With

    Dim startPos As Long, endPos As Long
    startPos = InStr(result, """text"":""") + 8
    endPos = InStr(startPos, result, """}")
    DeepLTranslate = Mid(result, startPos, endPos - startPos)
End Function

Hilfsfunktion: URL-Encoding

Function URLEncode(str As String) As String
    str = Replace(str, " ", "%20")
    str = Replace(str, vbCrLf, "%0A")
    str = Replace(str, vbLf, "%0A")
    URLEncode = str
End Function

Google Translate per VBA

Google hat keine offizielle API ohne Bezahldienst.
Aber über einen inoffiziellen Endpunkt geht’s – für Tests.

Function GoogleTranslate(text As String, fromLang As String, toLang As String) As String
    Dim http As Object
    Dim url As String
    Dim result As String
    Dim responseStart As Long, responseEnd As Long

    url = "https://translate.googleapis.com/translate_a/single?client=gtx&sl=" & _
          fromLang & "&tl=" & toLang & "&dt=t&q=" & URLEncode(text)

    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.send

    result = http.responseText
    responseStart = InStr(result, "[[") + 2
    responseEnd = InStr(responseStart, result, """")
    GoogleTranslate = Mid(result, responseStart, responseEnd - responseStart)
End Function

Übersetzung ganzer Spalten

Sub SpalteUebersetzen()
    Dim zeile As Long
    Dim letzte As Long
    Dim quelle As String
    Dim ziel As String
    Dim text As String
    Dim übersetzt As String

    quelle = "A"
    ziel = "B"
    letzte = Cells(Rows.Count, quelle).End(xlUp).Row

    For zeile = 2 To letzte
        text = Cells(zeile, quelle).Value
        If Len(Trim(text)) > 0 Then
            übersetzt = DeepLTranslate(text, "DE", "EN") ' Oder GoogleTranslate(...)
            Cells(zeile, ziel).Value = übersetzt
            DoEvents
            Application.Wait Now + TimeValue("0:00:01") ' für Rate-Limit
        End If
    Next zeile

    MsgBox "Übersetzung abgeschlossen."
End Sub

Was Du beachten solltest

  • Übersetze nicht mehr als 500.000 Zeichen/Monat mit DeepL Free
  • Google ist schneller, aber sprachlich einfacher
  • Textlänge prüfen: bei > 500 Zeichen ggf. kürzen oder splitten
  • Sonderzeichen vorher bereinigen

Erweiterungsideen

  • Sprache automatisch erkennen lassen
  • Übersetzung in mehreren Sprachen nebeneinander
  • Benutzerdefinierte Schaltfläche in Excel-Band einbauen
  • Zusammenfassung langer Texte vor Übersetzung per GPT

Wenn Du regelmäßig Excel-Spalten übersetzen musst – dann bau Dir ein Makro, das das für Dich erledigt, bevor Du wieder copy-paste in den Browser klickst.

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert