
業務上の単純作業の自動化のため、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ランキング
-
iPodのアプリについて
-
ボーダフォンのJAVAってなに
-
コピーのショートッカトキーは?
-
FairUse4WM v1.3 がインストー...
-
シャットダウン時に・・・
-
プレインストールXPを98か2000に
-
例外OE発生で困っています
-
cvsとは
-
問題が発生したため、プログラ...
-
Java 8 Updateを消去していいのか
-
HDのアクセスランプが常時点滅
-
アプリケーションエラーについて
-
エクセルの動作が停止する事が...
-
エラーでアプリケーションが落ちる
-
Win7起動時のエラー表示、原因...
-
CrystalDiskInfoの書き込み量
-
型番
-
仮想マシンでWindows2000
-
インストールされているアプリ...
-
USB2.0確認
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Corei 7-12700(Alder Lake) と ...
-
写真保存アプリは運営側からは...
-
Outlook でのメールの表示方法...
-
問題が発生したため、このプロ...
-
PCのアカウント名変更の影響に...
-
エラー名:AppHangB1 iexplore....
-
WINDOWS vs LINUX
-
オラクルってなんの会社なんで...
-
エクセルの動作が停止する事が...
-
Netscapeの設定について
-
英語版windowsOSを利用している...
-
16ビット と 32 ビット
-
【Mac】ウィンドウを閉じた時の...
-
インターネット アプリケーショ...
-
一太郎などの使用者欄の名前を...
-
PING.EXE - アプリケーション...
-
jwwでjwcファイルが開かない!
-
パソコンのエラーについて
-
windows 7で、特定のアプリケー...
-
Microsoft .NET Frameworkを削...
おすすめ情報