googleandy 發表於 16-9-11 23:14

請教 EXCEL VBA 問題

本帖最後由 googleandy 於 16-9-11 23:14 編輯


我使用 windows 10,如上圖, 我想按鈕後,游標自動移到網頁的 TextBox輸入字串, 結果成功了.但是 ......



同一電腦,如圖, 如果換成CMoney網頁卻失敗了,字串輸入到EXCEL的儲存格了(空心箭頭).究其原因,游標有移到 TextBox上, 但沒辦法 Focus在網頁上(仍Focus在EXCEL), 所以字串就輸入到EXCEL的儲存格了.不過讓人納悶的是......

如上圖,同樣的程式碼,我把它移到 Win 7的電腦,卻可以正常執行.
請問, 這到底是怎麼一回事呀? 請問何解.thanks.



googleandy 發表於 16-9-11 23:25

EXCEL檔案,如附件. 它是OFFICE 2010 版本.

仔仔 發表於 16-9-12 07:39

googleandy 發表於 16-9-11 23:25
EXCEL檔案,如附件. 它是OFFICE 2010 版本.

AppActivate有用嗎
和sendkeys有用tab 換control focus?

googleandy 發表於 16-9-12 09:04

仔仔 發表於 16-9-12 07:39
AppActivate有用嗎
和sendkeys有用tab 換control focus?

仔仔: 非常謝謝您的回覆.

整個運作原理是--- 模擬滑鼠移到某個位置, 然後 Click. 如果 click這個動作成功,那麼被Click的網頁"自然地"Focus住, 全部的程式碼就下面幾行而已.

Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal y As Long) As Long
Private Declare 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)
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub delay(ByVal n As Single)
    Dim tm1 As Long, tm2 As Long
    tm1 = timeGetTime
    Do
      tm2 = timeGetTime
      If (tm2 - tm1) / 1000 > n Then Exit Do
      DoEvents
    Loop
End Sub
Sub 按鈕1_Click()
   SetCursorPos 1430, 400 '移動游標
   mouse_event 2, 0, 0, 0, 0'左鍵按下
   mouse_event 4, 0, 0, 0, 0'左鍵放開'
   delay 1 '休息1秒
   SendKeys "123456789" '送出字串
End Sub



仔仔所言 "AppActivate" " 和sendkeys有用tab 換control focus" 不知如何使用,
願聞其詳,Thanks.

頁: [1]
查看完整版本: 請教 EXCEL VBA 問題