COCO研究院

 找回密碼
 註冊
搜索
查看: 3691|回復: 3

[EXCEL] 請教 EXCEL VBA 問題

[複製鏈接]
發表於 16-9-11 23:14 | 顯示全部樓層 |閱讀模式
本帖最後由 googleandy 於 16-9-11 23:14 編輯

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

B.png

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

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



 樓主| 發表於 16-9-11 23:25 | 顯示全部樓層
EXCEL檔案,如附件. 它是OFFICE 2010 版本.

活頁簿ABCDE.zip

15.87 KB, 下載次數: 181

發表於 16-9-12 07:39 | 顯示全部樓層
googleandy 發表於 16-9-11 23:25
EXCEL檔案,如附件. 它是OFFICE 2010 版本.

AppActivate  有用嗎
和sendkeys  有用tab 換control focus  ?
 樓主| 發表於 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.

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-25 02:44

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |