- ベストアンサー
エクセルVBAでマウスの操作はできますか?
エクセルVBAで、マウスのポインタを画面の中央にもってきたり、左クリックを押すという操作をさせたいのですが、無理ですか? sendkeyなんでしょうか…。画面の中央にマウスのポインタを持ってくるというのも、使用しているモニタによって座標が違うような気もしますが…。不勉強ですいません。 VBAの本を見ても、VBAのヘルプを見てもわかりませんでした。もともと無理な話なのでしょうか? 教えて下さい。よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 いただいた内容は、OKWave の当初質問からは独立した新しい内容と思います。UWSC 自身、開発者によるサポート掲示板をコミュニケーション・ツールとして提供していますので、そちらに投函するのがよいでしょう。(参考URLに念のため URL を記録しておきました。) OKWave への質問で当初得られたかった目的が達成されたとお考えであれば、ひとまず質問自身は区切りを付けたほうがよいと回答者は考えます。 (回答者のコメント) 記録機能で得られたプログラムは KBD, MMV, ACW, BTN の四つの低レベルウインドウ関数で構成されているため、一つ一つファイルとして格納していくとファイル数があっという間に増えていきます。 Launch Menu (ランチメニュー) から一つづつ起動を指示するアプローチはすでに気付かれたように 10 ファイルしか登録できないために具合が悪いです。かわりに、UWSC スクリプトの起動を指示するスクリプトを UWSC で書くことができます。 起動の指示には、EXEC による UWSC.exe プロセスを新規に作成する方法、CALL による方法、それぞれのファイルを procedure/function として括りだして一つのファイルにまとめ、そのファイルで該当 procedure/function を呼びだす方法など、いくつかアプローチがあります。
その他の回答 (4)
- iriyak
- ベストアンサー率48% (40/82)
>でも、このフリーウェア『uwsc44b』ではスクリプトの内容を覗いたり編集したりすることはできないのでしょうか…? 可です♪ (スクリプトエンジンの核は一緒です) UWSC Pro は、Free版の上位版です。以下は説明の抜粋ですが回答者にとっては、★の所が生産性向上に役立っています。 (ま、ライセンスフィーなんて吞み会に行けばもとがとれます :) ) ★ EXE化ツールが付属しています。(EXE化後は単体での実行が可能であり、ライセンスフリーにて配布できます) ★ IE(Web)用記録ツールが付属しています。(Web上の動作をUWSCのスクリプトとして記録する事ができます) ・ HTMLを利用した画面関数が使えます。 ・ EXCELシート用関数が使えます。 ★ デバッガが付属しています。
お礼
夜遅くまでありがとうございますm(_ _)m iriyakさん、いい人ですね(涙) ちょっと試してみました。 保存したファイルをNOTEPADで編集して、余分なところを削除したり、訂正したりする感じで、かなり快適になりそうです(^o^)v 感謝感謝! 設定のランチメニューというのが便利ですね。それを使って今したい操作をサッとやらせるって感じですね。でも、10個しか登録できないんですね…(悲) 10個でも非常にありがたく、十分かもしれませんが、20個,30個の動作などをサッと呼び出す方法はありますか? もしかしたら、次のお返事はすぐにできない可能性がありますが、教えて頂けると有難いです!
- iriyak
- ベストアンサー率48% (40/82)
>そのデータ管理プログラム自体を直接VBAで操作できたら嬉しい >(1)操作画面のあるボタンをクリックして次の画面に進む >(2)操作画面の2箇所に決まった文字を入力し、OKボタンを押して次の画面に進む データ管理プログラムは一般的な Windows アプリケーションでしょうか。もしそうならば Windows 操作の自動化に特化したアプリケーションの採用を検討されてはいかがでしょうか。 回答者のおすすめは、Windows 自動化ソフト UWSC Pro です。このような操作を簡潔な記述で指示できます。習得に若干時間を要しますが、あまりあるメリットを享受できると思います。 ・Windows 操作 (マウス移動、マウスボタン押下、キーボード押下の三種類) を切り取ってデータとして保存し、それを再生できる ・データはプログラミング言語のプログラム (Windows 操作そのものをプログラミングの対象としている) ・利用者自らプログラムを作成し再生を指示することが可能 ・多くの高/低レベルの組み込み手続きが提供されている (実際のプログラム例) QNo.3959918『エクセルのマクロでこんな事って出来ますか?』 http://okwave.jp/qa3959918.html から ANo.9 FFFtp のある画面設定を全く手を動かさないで行う UWSC スクリプト例です。 (参考URL) UWSC Pro のポータルです。
- 参考URL:
- http://www.uwsc.info/
お礼
教えて頂いたサイトを調べてみました。もう少し時間をかけて研究する必要がありそうですが、『UWSC Pro 』はシェアウェアですね(^o^;) 購入するのにちょっと勇気がいるなぁ…。貧乏でスイマセン(涙) 同じサイトのフリーウェアのものをダウンロードしてみると、確かにマウスやキー操作などが記憶できますね。スゴイ! でも、このフリーウェア『uwsc44b』ではスクリプトの内容を覗いたり編集したりすることはできないのでしょうか…? でも、慣れたらとても使い勝手がよくなる気がします。ありがとうございました。m(_ _)m
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは 直接の回答ではありませんが 「"api"_"setcursorpos"_"vba"」 (_はスペース)などでWeb検索すると色々出てくるかも知れません。 方法は色々ある筈ですが、 モニターのサイズをPointに換算して setcursorpos のような流れだったように記憶しています。 API関数をいくつか組み合わせるのが結局は近道でしょうか。 (モニターの中央なら比較的簡単だけど、 ブックのウィンドウ(シート)の中央とかだと 結構面倒だった憶えがあります。) (昔作ったのが手元に無くて、すぐには思い出せません。) ただ、 APIの情報は(MSからも)案外豊富なので、 「使いこなし」を考えると、 まず、自力で書くか、サンプルを試してみて、 足りない部分をソースコードとともにあらためて質問されると 良いかなぁ(回答も付き易い)と思います。 回答じゃなくてすみません。
お礼
いや~、ありがとうございます! API関数、調べてみます。 手がかりが全くなかったので、非常にありがたいですm(_ _)m 今回はエクセルシートを操作したいのではなく、他のプログラムの操作を少し効率化させたいだけなんです。 そのプログラムの出てくるウィンドウの位置はほぼ同じですし、会社の同じ型のパソコンでしか操作しないので、ボタンの位置もほぼ変わらないと思います。 アドバイス頂いたように、少し調べてみて、そこでわかった部分,わからない部分も含めて、再度質問させて頂きます。
補足
検索してサンプルプログラムなどを見ながら、以下のようなコードを書いてみました。 Private Declare Function SetCursorPos Lib "user32.dll" ( _ ByVal x As Long, _ ByVal y As Long) As Long Sub Macro1() Call SetCursorPos(100, 100) End Sub もしかしたら、余分な記述があるかもしれないのですが、まだまだ知識不足でわかりません。しかし、とりあえずこれで、マウスポインタの位置はモニタの左上の端から右にx座標,下にy座標という形で設定できることがわかりました。 あとは、左クリック押したことにするにはどうしたらよいかです…。再度検索などして調べてみます。もしご存知でしたらお教え頂けると有難いです!
- iriyak
- ベストアンサー率48% (40/82)
こんにちは。 可能か無理かといえば、可能です。 差し支えなければ、Excel VBA のプログラムにマウス操作の指示を組み込みたいと思ったきっかけや背景理由をこちらに共有いただくことは可能でしょうか。それによって具体的な解決手段を回答者は検討できるかもしれません。 (コメント) 最近手にした株ロボの参考書で、Win32 API を用いてエクセルブックのフォーム上のボタンなどの操作自動化を Excel VBA で実現しているものを発見しました。皆さん、色々な方法で Windows 自動化をトライされていますね。
お礼
可能なんですね(^o^)♪ マウスの操作をVBAで行いたいと思ったきっかけは、最近私の会社に導入されたデータ管理プログラムが非常にいけてなくて、同じような動作をアホみたいに何度も行わせるんです…。 そのデータ管理プログラム自体を直接VBAで操作できたら嬉しいのですが、おそらく、今の私の知識では理解しきれないと思いましたので、マウスの操作がある程度速くなれば、仕事もスピード化できると思いまして、質問しました。 もう少しやりたい内容を詳しく説明致しますと、 (1)操作画面のあるボタンをクリックして次の画面に進む (2)操作画面の2箇所に決まった文字を入力し、OKボタンを押して次の画面に進む (1)の操作の使用の割合が多いのですが、画面の決まった場所にボタンが出てくるので、VBAでパッと行えると嬉しいです。
お礼
ありがとうございます。いろいろな方法があるんですね~ お教え頂いた方法でもう少し調べてみます!