プロが教える店舗&オフィスのセキュリティ対策術

VBE画面から

Sub test()
Dim i As Long
i = Shell("C:\WINDOWS\regedit.exe")
End Sub

を実行するとレジストリエディタを起動できるのですがアクティブ(前画面)になりません。

Sub test()
Dim i As Long
i = Shell("C:\WINDOWS\regedit.exe")
AppActivate i
End Sub

これにしたも同じく全画面になりません。
ただ、一度起動した後に再度このコードを実行すると、
プロシージャの呼び出し、または引数が不正です。(Error 5)
と言うエラーになりますが、1回目に開いたレジストリエディタがアクティブになります。

vbaコードで起動だけではなく、手前に表示させるにはどうすればいいですか?

A 回答 (2件)

そちらのOSは、Vista 以降なのではありませんか?


既定値のままなら UAC によってブロックされているはずです。
イミディエイトウィンドウで確認した限りですが
createobject("shell.application").shellexecute "regedit.exe"
を確かめてみてください。

VBAでレジストリエディタを開く必要があるのかな?
http://msdn.microsoft.com/ja-jp/library/cc364417 …
余計なお世話かもしれん。
    • good
    • 0
この回答へのお礼

OSはwin7です。説明不足ですいません。

createobject("shell.application").shellexecute "regedit.exe"
これでも起動できました。

お礼日時:2013/01/26 18:25

Sub test()


Dim i As Long
i = Shell("C:\WINDOWS\regedit.exe", vbMaximizedFocus)
End Sub

とか。
    • good
    • 0
この回答へのお礼

最大化にする必要はないので
i = Shell("C:\WINDOWS\regedit.exe", vbNormalFocus)
で出来ました。

お礼日時:2013/01/26 18:25

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