2017-02-10 15 views
0

5年以上前から、このコードを使用して、ユーザー入力の英語テキストをExcel VBAマクロのフランス語またはドイツ語に変換しています。これはMicrosoft Azure Marketplaceでの使用でしたが、私の使用が最小限だったので、無料でした。Excal VBAマクロでAzure Translatorを使用

Function MicrosoftTranslate(sText As String, Optional sLanguageFrom As String = "", Optional sLanguageTo As String = "en") As String 
Dim sRequest As String, sResponseText As String 
    sRequest = "Translate?from=" & sLanguageFrom & "&to=" & sLanguageTo & "&text=" & sText 
    sResponseText = MSHttpRequest(sRequest) 
    'Debug.Print sResponseText 
    MicrosoftTranslate = StringFromXML(sResponseText) 
End Function 

Function MicrosoftTranslatorDetect(sText As String) As String 
' returns lowercase two character code eg "fr" 
    MicrosoftTranslatorDetect = StringFromXML(MSHttpRequest("Detect?text=" & sText)) 
End Function 

Function MSHttpRequest(sRequest As String) As String 
Dim sURL As String, oH As Object, sToken As String 
    sURL = "http://api.microsofttranslator.com/V2/Http.svc/" & sRequest 
    sToken = GetAccessToken() 
    Set oH = CreateObject("MSXML2.XMLHTTP") 
    oH.Open "GET", sURL, False 
    oH.setRequestHeader "Authorization", "Bearer " & sToken 
    oH.send 
    MSHttpRequest = oH.responseText 
    Set oH = Nothing 
End Function 

Function GetAccessToken() As String 
Static sAccess_Token As String, dtExpiry_Time As Date 
Const OAUTH_URI As String = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13" 

'get Your Client ID and client secret from 
'https://datamarket.azure.com/developer/applications 
Const CLIENT_ID As String = "xxxxxxxxx" 
Const CLIENT_SECRET As String = "1234567890abcdefghijklmnopqrstuvwxyz" 
Dim sRequest As String, sResponse As String 
Dim webRequest As Object 

If Now() > dtExpiry_Time Then ' time for a new access token 
    Set webRequest = CreateObject("MSXML2.XMLHTTP") 

    sRequest = "grant_type=client_credentials" & _ 
     "&client_id=" & CLIENT_ID & _ 
     "&client_secret=" & URLEncode(CLIENT_SECRET) & _ 
     "&scope=http://api.microsofttranslator.com" 
    webRequest.Open "POST", OAUTH_URI, False 
    webRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
    webRequest.send (sRequest) 
    sResponse = webRequest.responseText 
    Set webRequest = Nothing 

    If InStr(1, sResponse, """error:""", vbTextCompare) > 0 Then 
     Err.Raise 9999, "GetAccessToken " & sResponse 
    End If 

    sAccess_Token = NameValue("access_token", sResponse) 
    dtExpiry_Time = Now() + Val(NameValue("expires_in", sResponse))/60/60/24 ' maybe *.95 for safety margin 
    'Debug.Print "Token expires at "; Format$(dtExpiry_Time, "hh:mm:ss") 
End If 
GetAccessToken = sAccess_Token 
End Function 

新しいMicrosoft Azureが登場した今、私のフリーライドは終わったようです。だから私は私のVBAコードを変換する必要があります。私は見て、まだ付属のルーチンを変換するのに役立つ良いリファレンスを見つけていない。私はVBAでは悪くないが、これらの新しい機能を実装するのに役立つ必要がある。

誰かが私に新しいシステムを使ってもらうための参考資料(私のような初心者のためのもの)を助けたり指摘したりすることができますか?

私は何かを実行した後、私はこの小さなアプリケーションのために私のお金の価値があるかどうかを判断することができます。

おかげで..... RDKは

答えて

0

実際のAzure Coginitveサービスで翻訳APIは、フリー層から始まります。 https://www.microsoft.com/cognitive-services/en-us/pricing

新しいAPIの主な違いは、トークンを取得する方法です。 http://docs.microsofttranslator.com/oauth-token.html

残りは同じと思います。ここで参考文献を見つけることができます: docs.microsofttranslator.com/text-translate.html

+0

OK、私はそれを見ていきます。私は今旅行しているので待たなければなりません。ありがとうございました。RDK – RDK

+0

OK、私はAzure認知サービス(テキストトランスレータ)の "Pay as you go"アカウントにサインアップしました。アカウント名、リソースグループ名、カップルキーがあります。しかし、私は上記のアプリケーションでこれをどのように使用するかに関するサンプルコードをまだ見つけていません。私はVBAでこれを使用しようとしている荒野で一人でいるように見えますか?いくつかの具体的な助け、参考文献または例が評価されます。 – RDK

+0

私はこのリファレンスを見つけました(https://sysmod.wordpress.com/2017/01/20/vba-code-for-microsoft-text-translator-api/)。私はそれを介して作業しています。私はそれが私の質問に答えると私はポストバックします。 – RDK

関連する問題