Wordの[検索と置換]ダイアログボックスの強化版である「山猫の手」 のユーザーの方からご要望がありました。
ダイアログボックスを開いたままで、文書にフォーカスを移したいとのことでした。
さっそく作ってみました。次のアップデートで実装いたします。
<目次>
このマクロでできること
ShowModalプロパティの値がFalseのユーザーフォーム(【コード】ユーザーフォームを表示したまま文書を編集する)で、このマクロを実行すると、ユーザーフォームを開いた状態で、現在開かれているファイルにフォーカスが移ります。
マクロ実行前
マクロ実行後
マクロの解説
まず最初にネットで調べて出てきたのが、以下のような方法です。
でも、うまく動きませんでした。
AppActivate "Microsoft Word" '←失敗
さらにネットで調べると、別の方法がありました。
そこで、こちらを試しましたがダメでした。
AppActivate Application.Caption '←失敗
多分、以下のような記事を参考にしているんだと思います。
Can't Use ActivateMicrosoftApp Method to Activate Excel
Excel VBA の説明ですが、かなり前の記事です。
さらに、こんなものも考えてみましたがダメでした。
AppActivate ActiveDocument.Name '←失敗
で、結局、Wordオブジェクト変数を作り、そのオブジェクトにフォーカスを移すことにしました。これで、ほしかった動作ができました。
Dim myApp Set myApp = GetObject(, "Word.Application") myApp.Activate Set myApp = Nothing
よくよく考えたら、そんなに面倒なことをする必要ないことに気づき、次の一行で終わりました(笑)。
Application.Activate
マクロ
Private Sub CommandButton1_Click() Application.Activate End Sub
参考記事
AppActivate ステートメント (MSDN)