これは私がそれを行う方法です。これは、Google 翻訳で使用される言語コードを指すオプションの列挙オブジェクトを持つ関数です。簡単にするために、いくつかの言語コードのみを含めました。また、このサンプルでは、Microsoft Internet Controls リファレンスを選択したので、オブジェクトを作成する代わりに、InternetExplorer オブジェクトが使用されています。最後に、出力をクリーンアップする手間を省くために、.innerHTML ではなく .innerText を使用しました。覚えておいてください、Google 翻訳には約 3000 文字の制限があります。また、特にこれを複数回使用する場合は、IE=nothing を設定する必要があります。そうしないと、複数の IE プロセスが作成され、最終的には機能しなくなります。もう。
設定...
Option Explicit
Const langCode = ("auto,en,fr,es")
Public Enum LanguageCode
InputAuto = 0
InputEnglish = 1
InputFrench = 2
InputSpanish = 3
End Enum
Public Enum LanguageCode2
ReturnEnglish = 1
ReturnFrench = 2
ReturnSpanish = 3
End Enum
テスト...
Sub Test()
Dim msg As String
msg = "Hello World!"
MsgBox AutoTranslate(msg, InputEnglish, ReturnSpanish)
End Sub
関数...
Public Function AutoTranslate(ByVal Text As String, Optional LanguageFrom As LanguageCode, Optional LanguageTo As LanguageCode2) As String
Dim langFrom As String, langTo As String, IE As InternetExplorer, URL As String, myArray
If IsMissing(LanguageFrom) Then
LanguageFrom = InputAuto
End If
If IsMissing(LanguageTo) Then
LanguageTo = ReturnEnglish
End If
myArray = Split(langCode, ",")
langFrom = myArray(LanguageFrom)
langTo = myArray(LanguageTo)
URL = "https://translate.google.com/#" & langFrom & "/" & langTo & "/" & Text
Set IE = New InternetExplorer
IE.Visible = False
IE.Navigate URL
Do Until IE.ReadyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:5"))
Do Until IE.ReadyState = 4
DoEvents
Loop
AutoTranslate = IE.Document.getElementByID("result_box").innerText
IE.Quit
Set IE = Nothing
End Function