プロが教えるわが家の防犯対策術!

いつもお世話になります

今、他のソフトを使いながら処理するプログラムをVBAで作成しています
AppActivate(MyBook & " - Excel") を使ってExcelをアクティブしていますが
互換モードの時はエラーになってしまいます

互換モードで開いているかの判定は分かるのですが
AppActivate(MyBook & " - Excel") の処理が分かりません
分かりましたら教えてください

尚:MyBook = ActiveWorkbook.Nameで事前に実行しています


以上、よろしくお願い申し上げます

A 回答 (2件)

#1です


ダメなのかな・・・
互換と言う(環境がわからない)事から避けたのだけれど
他の方法としてはWindowsAPIのSetForegroundWindowでどうでしょう
キャプションが判っているので探して、実行します
(私的には判り易いAPIなので使い勝手は良いかも・・でもAPIなので一定の理解が必要です)


Declare Sub SetForegroundWindow Lib "user32" (ByVal hWnd As Long)
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub hWnd_Activate()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, MyBook & " - Excel")
SetForegroundWindow hWnd '最前面表示
End Sub
    • good
    • 0
この回答へのお礼

おはようございます
早速のご回答、本当にありがとうございます
NO.2の回答で上手く行きそうです

本当に助かりました、心から感謝します
これからもよろしくお願い申し上げます

お礼日時:2022/06/28 10:32

こんばんは


>互換モードで開いているかの判定は分かるのですが
判定で2010まで(MDI) なら
Windows(MyBook & " - Excel").Activate
2013以降(SDI)ならAppActivate(MyBook & " - Excel")でどうでしょう?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!