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
Anbieter | Vorteile | Nachteile |
---|---|---|
DeepL | Sehr gute Sprachqualität | Zeichenlimit in Free-Version |
Schnell, viele Sprachen | Stil 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.
No responses yet