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

現在開いているエクセルファイルをアクティブにしたいです。
バージョンは2003です。

アクセスVBAから
Sub test()
Dim rc As Long
rc = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", 1)
AppActivate "aaa.xls"
End Sub

を実行すると、
新規にアプリケーションが開いて、空のBOOK1が表示されます。
本当は、aaa.xlsをアクティブにしたいのですがうまく出来ません。

aaa.xlsは既に開いている状態です。
aaa.xlsはデスクトップにあります。

http://officetanaka.net/excel/vba/statement/AppA …
を見ながらやってみたのですがうまく出来ません。

新たなアプリケーションは立ち上げたくないけど
aaa.xlsはアクティブにしたいです。

A 回答 (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
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2012/12/11 20:46

すでに、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

でしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2012/12/11 20:46

>新規にアプリケーションが開いて、空の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

だけでよいはずですが。。。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2012/12/11 20:46

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A