Уже более 5 лет я использовал этот код для преобразования английского текста на французский или немецкий язык в макросе Excel VBA. Это было с Microsoft Azure Marketplace, и, поскольку мое использование было минимальным, оно было бесплатным.Использование Azure Translator в макросе Excal VBA
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 – RDK
OK, я зарегистрировался для учетной записи «Pay as you go» для Azure Cognitive Services (Text Translator). У меня есть имя учетной записи, имя группы ресурсов и пару ключей. Но я еще не нашел какой-либо пример кода о том, как использовать его в моем приложении выше. Казалось бы, я одинок в пустыне, пытаясь использовать это с VBA ?? Можно было бы оценить конкретную помощь, ссылки или примеры. – RDK
Я только что нашел эту ссылку (https://sysmod.wordpress.com/2017/01/20/vba-code-for-microsoft-text-translator-api/). Я работаю над этим. Я отправлю сообщение, если он ответит на мои вопросы. – RDK