有道翻译 excel webservice 失效_VBA实践+excel英文逐句自动有道翻译为中文
生活随笔
收集整理的這篇文章主要介紹了
有道翻译 excel webservice 失效_VBA实践+excel英文逐句自动有道翻译为中文
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
VBA實踐+excel英文逐句自動有道翻譯為中文
有一個需求是這樣的,如下圖所示,在一個excel工作表中,B列是英文,每一個單元格一句英文,在C列要填英文對應的有道機譯結果。為保證準確度,要求必須一句句翻譯,不能把英文做成一個文檔再上傳有道翻譯。
excel英語翻譯嘗試使用VBA代碼模擬鍵盤和鼠標自動完成復制單元格英文-粘貼到有道客戶端的輸入框-等待翻譯結果-復制翻譯結果-粘貼到對應的單元格中的整個過程。代碼實現環境為64位win8.1,64位excel2010,有道桌面客戶端,代碼如下。模擬的鼠標鍵盤按鍵可能會被網站、軟件等攔截,用到其他地方不一定管用哦。
Private Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As LongPtr 'SetCursorPos函數把光標移到屏幕的指定位置 Private Declare PtrSafe Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)'這是 VB API 函數聲明, '在 WINDOWS 系統中有個文件 kernel32.dll 動態連接(函數)庫文件,里面包含好多WINDOWS 功能的函數。該聲明是指,在所寫的程序中要用到這個庫文件中的一個函數 Sleep, 它的參數是dwMilliseconds. '功能是,讓這條語句的下一條語停頓 dwMilliseconds 時間后再運行。單位為毫秒 Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Const MOUSEEVENTF_LEFTDOWN = &H2 '按下左鍵,&H2表示2的十六進制值 Private Const MOUSEEVENTF_LEFTUP = &H4 '釋放左鍵,&H4表格4的十六進制值Private Sub 單擊() mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 '高版本系統如win10可能需要使用call調用ddl動態連接這樣才能生效,如call mouse_event (MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0).https://blog.csdn.net/qq_39533125/article/details/75220288 Sleep 50 mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 Sleep 100 End SubSub 自動發送翻譯()Dim WS As Worksheet Dim xPaste&, yPaste&, xCopy&, yCopy&, xClear&, yClear& Dim i% Dim myData As DataObjectSet WS = ThisWorkbook.Sheets("工作表1") '粘貼位置 xPaste = 217 yPaste = 96 '復制按鈕位置 xCopy = 198 yCopy = 551 '清除按鈕位置 xClear = 610 yClear = 288For i = 2 To 5WS.Cells(i, 2).CopySleep 500 '延時500毫秒SetCursorPos xPaste, yPaste '把光標移動到屏幕輸入框位置DoEvents '會將控制權傳給操作系統。當操作系統處理完隊列中的事件,并且在 SendKeys 隊列中的所有鍵也都已送出之后,返回控制權。Sleep 500Call 單擊DoEventsSleep 500Application.SendKeys "^V" '粘貼英文到輸入框DoEventsSleep 500SetCursorPos xCopy, yCopyDoEventsSleep 2000 '等待翻譯結果出來Call 單擊 '單擊復制按鈕,復制翻譯結果DoEventsSleep 500SetCursorPos xClear, yClearDoEventsSleep 500Call 單擊DoEvents'把翻譯結果輸入到單元格中Set myData = New DataObjectWith myData.GetFromClipboardIf .GetText <> "" Then WS.Cells(i, 3).Value = .GetText '把剪貼板的文本放入到單元格End WithSet myData = NothingNext iMsgBox "完成"End Sub知乎視頻?www.zhihu.com想要學習更多關于excel vba的知識,可以看看這個很實用的書。
總結
以上是生活随笔為你收集整理的有道翻译 excel webservice 失效_VBA实践+excel英文逐句自动有道翻译为中文的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: github page hexo博客gi
- 下一篇: pythonfor循环案例教程_pyth