質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1304閲覧

VBAでAutohotkeyを動かしたい

ttii

総合スコア14

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/05/28 06:55

前提・実現したいこと

エクセルのマクロでAutohotkeyのショートカットを動かしたいのですが上手くいきません。
流れとしては、マクロが動いてるときにAutohotkeyをアクティブ、2秒待ち時間、ショートカットキー入力、となります。
AppActivateはメモ帳ではうまく動くのですが、AutoHotkeyもアクティブにする方法はありますか?

発生している問題・エラーメッセージ

プロシージャの呼び出し、または因数が不正です。

該当のソースコード

AppActivate "test.ahk - AutoHotkey", True
Application.Wait Now + TimeSerial(0, 0, 2)
Sendkeys "^k"

試したこと

AppActivate "test.ahk - AutoHotkey", True
の部分に問題があるので、"test.ahk", Trueにしてみたがダメでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

AutoHotkeyって下記のことですよね。

AutoHotkey の評価・使い方 - フリーソフト100

これだとすると、ホットキー(ショートカットキー)に独自のコマンドを登録するもので、
これ自体、ウィンドウを持たないものなので、アクティブにできないです。
当然、AppActivateは無意味なものになります。

実際、何をしたいのか説明したほうがいいかと思います。


コメントより

マクロ上でホットキーを動かすことができれば任意のブラウザやソフトにペーストができるので、
作業効率を上げることができると考えています。

操作したい任意のソフトを AppActivate でアクティブにして、Sendkeys でキー送信して操作することになると思います。
ただし、Sendkeys での操作は不安定だし、場合によっては想定外の動作になり危険でもあります。
例えば、マルチタスクですので、処理の実行中にユーザーが別のソフトをアクティブにしてしまうと、その別のソフトにキー送信されしまう危険性があります。

ブラウザであるなら、「VBA IE操作」あるいは「VBA WEBスクレイピング」をキーワードにWEB検索すると直接IEを操作する方法が見つかると思います。

あとはAPIをつかうとか、自動操作ツールを使うとかいろいろ方法はあります。

下記もご参考に。

VBAで他のアプリケーションを操作する ???? officeの杜

投稿2019/05/28 11:13

編集2019/05/29 00:25
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttii

2019/05/28 13:09

ホットキーはアクティブにできないのですね。知りませんでした。 今考えている作業は以下になります。  エクセルで指定の文字をクリップボードにコピー  他のブラウザにペーストするためホットキーでブラウザをアクティブにしてペースト マクロ上でホットキーを動かすことができれば任意のブラウザやソフトにペーストができるので、 作業効率を上げることができると考えています。
ttii

2019/05/29 11:47

ホットキーは前に作ったものがあって再利用したかったのですが、VBAからブラウザを操作する方法を試してみます。色々と情報ありがとうございました! 一人で悩んでいたので解決の糸口が見えて良かったです。
guest

0

WshShellのAppActivateを試してはどうでしょうか。
ただし、Captionに誤りがある場合、無限ループとなりますので、事前によく確認してください。

VBA

1With CreateObject("Wscript.Shell") 2 Do Until .AppActivate("test.ahk - AutoHotkey") 3 Application.Wait Now + TimeSerial(0, 0, 2) 4 DoEvents 5 Loop 6 .SendKeys "^k" 7End With

投稿2019/05/28 10:14

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttii

2019/05/28 13:12

ご回答いただきありがとうございます。 試してみたのですが、うまく動作しませんでした。他の方の回答でホットキーはウィンドウを持たないためAppactivateが使えないようです。
TanakaHiroaki

2019/05/28 13:19

そうみたいですね。お役に立てなくて申し訳ありません。
ttii

2019/05/29 11:41

いえ、とんでもございません!私も何も知らずに質問してしまいました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問