業務上の単純作業の自動化のため、VBAから他のアプリケーションを操作することが目的です。
以前、ブラウザ上での作業の時に使用した、下記2つのAPIでは今回はマウスカーソルが指定した座標に動いてくれません、、、
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long
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)
この2つのAPI以外で、カーソル移動とマウスクリックを実現する方法は何かありますでしょうか?
色々な方法を教えていただけるとVBAの勉強にもなり幸いです。
' // 標準モジュール
Option Explicit
Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal Y As Long) As Long
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)
Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub クリックテスト()
Call SetCursorPos(216, 421)
Sleep 400
Call mouse_event(&H2, 0, 0, 0, 0)
Call mouse_event(&H4, 0, 0, 0, 0)
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
> 業務上の単純作業の自動化
とのことですが対象のアプリケーションがもし Component Object Model のインターフェイスを提供しているのであれば、そのインターフェイス (COM オブジェクト) を利用して目的を達成させるアプローチの方が望ましい場合があります。
例: マイクロソフト社製品は COM オブジェクトを提供しています。VBA からも COM オブジェクトにアクセス出来ます。
対象のアプリケーションがそのようなインターフェイスを提供していない場合は、質問にあるように自前で Win32 API を使用するのも手です。あるいは回答にあるようにそれらを代行するソフトウェアの起動を指示して処理そのものはそちらに委託するか。
私は後者がよいと考えます。というのは UWSC が具備している組み込み手続きが沢山の UWSC ユーザのフィードバックを受けて洗練されているからです。これらを使わない手はありません。ぜひ業務の生産性向上に役立ててほしいと思います。
参考URL:http://www.uwsc.info/
No.2
- 回答日時:
こんにちは。
そのコードは、ご本人が書いたものか、他の方が書いたものかは分かりませんが、あまり、他のアプリケーションをVBAから動かすことと考えるのは辞めたほうがよいです。同じOffice でも、うまく行かないこともありますから。
>カーソル移動とマウスクリックを実現する方法は何かありますでしょうか?
この前、ここで質問がでていたのですが、
http://www.uwsc.info/
ここのUWSC で、記録を取って動かしみたらいかがですか?
たぶん、細かく聞いても、VBAの範囲内では、どうしようもないかもしれません。
No.1
- 回答日時:
今回は何をやりたいのか、質問の文章にはっきり書くべきです。
前回のコードも何をやっているのか書かず、コードだけ書いて、あとは読者、回答者で解析し、わからないものは判らなくてもよいという風な書き方になっているが、改めてほしい。
APIはそれほどなじみのあるものではない。
読者数万人が、1読するために貴重な時間を費やすのだから。
>VBAから他のアプリケーションを操作することが目的です。
も抽象的。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) excel vba 参照渡しと値渡し 2 2022/04/27 10:45
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
写真保存アプリは運営側からは...
-
Windows7でのアカウントの移行...
-
フォルダやファイル操作が瞬時...
-
Java 8 Updateを消去していいのか
-
PING.EXE - アプリケーション...
-
透過GIF(アニメーション)作成...
-
用語について:アプリケーショ...
-
MySQLInstanceConfig.exe の実...
-
VBAと似たプログラム言語を教え...
-
アプリケーションでハンドルで...
-
Office(Excel・Word)で、かな...
-
basp21をWindowsServer2008R2で...
-
XP スタートメニューのアイコン...
-
cvsとは
-
エラー表示が頻繁に出ます
-
「このアプリケーションのサイ...
-
携帯のAPPとは何ですか
-
Windowsのファイアーウオールの...
-
AppStoreでのアプリ追加
-
OFFICEアプリケーション上で日...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
写真保存アプリは運営側からは...
-
windows11でファイアーウォール...
-
Corei 7-12700(Alder Lake) と ...
-
アカウント名とユーザー名との...
-
携帯のAPPとは何ですか
-
PCのアカウント名変更の影響に...
-
Outlook でのメールの表示方法...
-
igfxEM Module について (Win8)
-
jwwでjwcファイルが開かない!
-
アクティブでないアプリケーシ...
-
「このアプリケーションのサイ...
-
Java 8 Updateを消去していいのか
-
VBAでのカーソル移動とマウスク...
-
問題が発生したため、このプロ...
-
ランタイムなしで動くソフトを...
-
16ビット と 32 ビット
-
マイクロソフトoffice 毎月(毎...
-
~は動作を停止しました
-
一太郎などの使用者欄の名前を...
-
開いている全エクスプローラー...
おすすめ情報