- ベストアンサー
AppActivateの使い方
- エクセルファイルをアクティブにする方法についての質問です。
- AppActivateというVBAの関数を使用してアクティブにしたいエクセルファイルを指定します。
- ただし、新たなアプリケーションを立ち上げることはなく、既に開いているエクセルファイルをアクティブにする方法について知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Win7 + Office2010 では下記のような感じで動きました。 aaa.xls を開いてなければ開き、 開いていたら、そのExcelアプリを最前面にして、 aaa.xls をアクティブにしてます。 こちらでは、aaa.xlsを単独で開いていた場合に、 AppActivateでは、プロシージャの呼び出し、または引数が不正です になってしまいます。 環境に依存する部分が有りそうなので下記でも不十分かもしれません。 Sub てすと() Dim myXL As Object Dim myXLPath As String Dim myXLName As String Dim WSH As Object Set WSH = CreateObject("WScript.Shell") myXLPath = WSH.specialfolders("desktop") myXLName = "aaa.xls" If Dir(myXLPath & "\" & myXLName) = "" Then MsgBox myXLPath & "\" & myXLName & " は見つかりません" Set WSH = Nothing Exit Sub End If Set myXL = GetObject(myXLPath & "\" & myXLName).Parent myXL.Visible = True If myXL.activeworkbook.Name = myXLName Then myXL.workbooks(myXLName).Activate Else myXL.workbooks.Open (myXLPath & "\" & myXLName) End If myXL.UserControl = True Set myXL = Nothing: Set WSH = Nothing End Sub
その他の回答 (2)
- okormazd
- ベストアンサー率50% (1224/2412)
すでに、aaa.xlsが開いているなら、質問のコードで、新しいExcelも開くが、aaa.xlsにフォーカスが移って、アクティブになっているはずです。ただし、フォーカスは移るが、最前面には表示されない。 aaa.xlsが開いていないなら、次のコードでaaa.xlsが開いてアクティブになり前面に表示されるでしょう。 rc = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE C:\Users\(ユーザー名)\Desktop\aaa.xls", 1) 質問からすれば、 すでに、aaa.xlsが開いているのをアクティブにして前面に表示したいだけのようだから、ShellもAppActivateもいらないで、単に、 Windows("bbb.xls").Activate でしょう。
お礼
ありがとうございます。
- DOUGLAS_
- ベストアンサー率74% (397/534)
>新規にアプリケーションが開いて、空のBOOK1が表示されます。 >本当は、aaa.xlsをアクティブにしたいのですがうまく出来ません。 >aaa.xlsは既に開いている状態です。 それでしたら、 Dim rc As Long rc = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", 1) は不要で、 Sub test() AppActivate "aaa.xls" End Sub だけでよいはずですが。。。
お礼
ありがとうございます。
お礼
ありがとうございます。