• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AppActivateの使い方)

AppActivateの使い方

このQ&Aのポイント
  • エクセルファイルをアクティブにする方法についての質問です。
  • AppActivateというVBAの関数を使用してアクティブにしたいエクセルファイルを指定します。
  • ただし、新たなアプリケーションを立ち上げることはなく、既に開いているエクセルファイルをアクティブにする方法について知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.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

IKLCQWBMF
質問者

お礼

ありがとうございます。

その他の回答 (2)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

すでに、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 でしょう。

IKLCQWBMF
質問者

お礼

ありがとうございます。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>新規にアプリケーションが開いて、空の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 だけでよいはずですが。。。

IKLCQWBMF
質問者

お礼

ありがとうございます。

関連するQ&A