Board logo

標題: [發問] vba可否使用座標使滑鼠按下左鍵或右鍵 [打印本頁]

作者: 幼稚園飛天豬    時間: 2010-8-6 11:25     標題: vba可否使用座標使滑鼠按下左鍵或右鍵

vba可否使用座標使滑鼠按下左鍵或右鍵
找了新論譠和舊論譠,好像沒什麼人討論這個問題。
因為公司只能用execl,所以才會想說用vba寫下功能

找了 一些文,但真的找不到,又看不懂。
不知有大大願意教導嗎?
感謝之^^
作者: GBKEE    時間: 2010-8-6 11:55

回復 1# 幼稚園飛天豬
vba可否使用座標使滑鼠按下左鍵或右鍵 ??
請再說明白些
作者: 幼稚園飛天豬    時間: 2010-8-6 12:06

本帖最後由 幼稚園飛天豬 於 2010-8-6 12:14 編輯

我用vba和我公司的系統結合(稱ti)
一種是:假設我是1024*768,那我希望在營目上的座標200*200的地方按下左鍵滑鼠,但是按 的是ti上面的按鍵,我已做好指向ti執行鍵盤的動作了,但是無法執行指向ti執行滑鼠的動作。不一定要以ti為指向。或許在整個win上面,就是1024*768的解析內,去點我想要的座標按下滑鼠左鍵,但不是點在execl上面。是點到我要的座標上,但點的是別的東西或者別的執行程式

不知我這樣說是不是很抽象

補上圖片說明應該比較清楚,^^,圖為用小算盤為例, 裡面說明的就是想依座標去執行滑鼠左鍵或右鍵的動作,不論是以全營幕還是以程算的座標都ok
作者: GBKEE    時間: 2010-8-6 12:16

回復 3# 幼稚園飛天豬
看了你的說明 是需高手來解答
作者: 幼稚園飛天豬    時間: 2010-8-6 12:25

GBKEE 也是很利害的高手呢^^平常你回答問題都好快而且都很符合需求也讓我學了不少
雖然不常發文,但我從舊看到新的論譠,學到不少^^

或許這塊東西比較少人研究,大多的人都直接用vb6寫了
只是因為公司只能使用execl,所以只好用vba來寫執行目的了。

我有看過閔大有發過,只是他發的我看的是目煞煞@@
作者: 幼稚園飛天豬    時間: 2010-8-7 15:16

好像沒人研究這塊@@
作者: Hsieh    時間: 2010-8-7 19:16

回復 6# 幼稚園飛天豬


    [url]http://chijanzen.net/wp/?p=51[/url]
EXCEL基本上討論的跟API有關的比較少有興趣去學學VB或C等較低階語言
作者: 幼稚園飛天豬    時間: 2010-8-9 09:07

回復  幼稚園飛天豬


   [/url]
EXCEL基本上討論的跟API有關的比較少有興趣去學學VB或C等較低階語言
Hsieh 發表於 2010-8-7 19:16



    感謝Hsieh 大提供的資源,終於找到方向了,謝謝^^
作者: Min    時間: 2010-8-9 20:56

本帖最後由 Min 於 2010-8-9 21:01 編輯

呵呵呵~ 讓您"目煞煞"真不好意思!
能力不及其他前輩 所以如有不妥之處 也請您多多指教^^"

以下是API模擬滑鼠事件 您試試看!


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)

SetCursorPos 100, 50'指定滑鼠座標
mouse_event &H2 Or &H4, 0, 0, 0, 0 '左鍵點擊
作者: PKKO    時間: 2016-2-12 11:42

回復 9# Min


    感謝版主大大,好強的功能,好簡單的程式碼,實在太厲害了!!!
不過目前碰到一個問題
想詢問一下版主大大

因為不同螢幕的解析度不同,導致無法點擊到相同的位置
想詢問一下有解決方法嗎?

例如:如何取得螢幕的X,Y的最大值?
或是如何取得螢幕的比例之類的?

抱歉麻煩版主大大了!
作者: PKKO    時間: 2016-2-12 13:18

回復 9# Min
感謝版主大大,小弟已經在別的討論版上面有看到答案,並將以分享
但仍有遇到問題
雖然下方程式碼可以找出螢幕的尺寸,但我發現一般的網站也會根據尺寸的大小作調整,可是不是等比例的調整
導致下方的程式碼雖然可以自行調整比例,可是仍然點不到原本該點的位置
  1. Public Declare Function GetSystemMetrics Lib "user32.dll" (ByVal index As Long) As Long
  2. Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
  3. 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)
  4. Public Const XX = 1920
  5. Public Const YY = 1080
  6. Public Const SM_CXSCREEN = 0
  7. Public Const SM_CYSCREEN = 1
  8. Sub TEST()
  9. x = [A1]: y = [A2]
  10. xaxis = GetSystemMetrics(SM_CXSCREEN) / XX
  11. yaxis = GetSystemMetrics(SM_CYSCREEN) / YY
  12. SetCursorPos x * xaxis, y * yaxis '指定滑鼠座標
  13. 'mouse_event &H2 Or &H4, 0, 0, 0, 0 '左鍵點擊
  14. 'mouse_event &H2 Or &H4, 0, 0, 0, 0 '左鍵點擊

  15. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)