● 指定した文字を含むタイトルのウィンドウをアクティブにする方法。API使用(64bit、32bit、兼用。)Excelの「Userform1」が開いているかどうかなどにも使えます(アクティブにまではできませんが)。

  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
  

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14301546969?post=2
※注
↑上のURLの4人目のAPI込の回答も良いと思いますが、実際にテストするとAPIの宣言の方法が間違っていてエラーになります。API宣言に手直しが必要です。また、32bitのExcel、あるいは古いExcel(2000とか)ではなぜか動作しません。APIの手直しが自分がバカなのでさらに手直しが必要なのかも?です。
動作としては、最後の、「SetForegroundWindow hwnd」で他のファイルを前面に移動させている=アクティブにしているので、本Webページの記事とやっていることは同じような意味です。
基本、「アクティブに(前面に)したいファイル名を指定するか、指定せずにやるか」の違いですが、上記URLの場合は、アクティブにしたい他のファイルが1つだけの場合、しか対応できません。
先に開いているファイルが複数あって、全部の後ろにしたい場合は、本Webページの方法のほうがラクちんかと思います。
なお、上記URLの回答の中では、最初の回答者の方のご回答のほうが、色々と参考になるかもしれません。
その中での参考URLが「他のテクニックの吸収」として、参考になるかも。
https://qiita.com/istoyo/items/c40a9dfb3d24b5326454

本Webページが参考にしたWebページは以下です。
https://liclog.net/getwindowtext-function-vba-api/

  

===================
以下、本文です。
  

AppActivate "白.bmp - ペイント"

みたいに、ウィンドウのタイトルがわかるなら、それを正確に指定するか、
以下のWebページの、
「NumLockが解除されてしまう問題」
という項目?

https://excel-ubara.com/excelvba1/EXCELVBA421.html

  

「AppActivate "白.bmp - ペイント"」の「白.bmp - ペイント」といった
ウィンドウタイトルを半自動で取得したい場合は、以降のようにします。
(正しくウィンドウタイトルを指定したつもりが、
 エラーになってしまうような場合。)

  
  

まず、標準モジュールを1つ作成して、「'==========」以降のコードをコピペします。

そのあと、以下のようなSubプロシージャを書いて実行します。

  

「On Error Resume Next」は、指定したファイルが開いてなかったときのエラー回避です。。

もし「Workbook_Open()」イベントで、別のExcelファイルを前面にしたかったら、
「Workbook_Open()」イベントに以下のコードを書けばOKです。

  Dim s_Wintitle As String
  On Error Resume Next
  Let s_Wintitle = WindowTitleGet01("他のExcelファイルのファイル名かその一部")
  AppActivate s_Wintitle

の4行か、あるいは、

  On Error Resume Next
  AppActivate WindowTitleGet01("他のExcelファイルのファイル名かその一部")

の2行を書きます。

※複数のファイルの最背面に起動したExcelファイルを置きたい場合は、
 後者の2行でやって、
 「AppActivate WindowTitleGet01("他のExcelファイルのファイル名かその一部")」を
 ファイルの数だけ書きます。

  
なお、逆に、
「起動中(「Workbook_Open()」イベント)のExcelファイルをアクティブにしたい場合」は
特に何もしなくてもいいですが、
あえて、何かしたい場合は、
その時点(「Workbook_Open()」イベントの時点)では、
「起動しています - Excel」というウィンドウタイトル(スプラッシュミニ画面?)なので、
つまり、まだ、ファイル名がウィンドウタイトルには含まれていないので、
「起動」とかを指定して(あえての)アクティブにします。
他にExcelファイルが1つも開いてなければ「Excel」とか「 - Excel」とかでもOKですけど。
(大文字小文字は区別されるので、それも注意です。)

WaitなどでDoEventをループさせて待ってもダメでした。

  

なお、「'==========」以降のコードのうち、先に、(一番最後の)「Sub main()」を単純に実行すると、意味がわかりやすいかも?しれません。
  

また、指定したファイルを起動してから、そのまま最前面にアクティブにするような場合は、
もしかしたら、数ミリ秒か数秒待たないとうまく行かないかもなので、
その場合は、以下の「「Sleep」関数」でその秒数を待つといいかも?