SHELLで、Accessのファイルをパラメータ付きで開く場合、
c:\program files\microsoft office\・・・\ACCESS.exe nyao.mdb /cmd xxxx
としないと、
nyao.mdb /cmd xxxx
では、パラメータを認識してくれないことが分かったのですが、
ACCESS.exeが格納されているフォルダがPCによって違うので、困っています。
ACCESS.exeが格納されているフォルダを取得する方法を知ってる方、
教えてください。
お願いします。
環境変数に登録してみるといいと思います。
環境変数って、ローカルにiniファイルを作るってことですか?
そうだとしたら、1台ずつ調べるのは大変だし、
勝手に再インストールして、フォルダ名変える人もいるし・・・
最後の手段とさせて頂きます。
くまさん、ありがとうございました。
他の方法を知ってる方、お待ちしてます。^^v
起動したいだけならShellExcecuteを使うという手もありかと思います。
レジストリを見るとか・・・
以下のVB.NETのサンプルコードによると、
(http://support.microsoft.com/kb/317113/ja)
\HKEY_LOCAL_MACHINE\Software\Classes\Access.Application\CLSID
の既定として登録されているCLSID({xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}形式)を探して、
対応する
\HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}\LocalServer32
の、既定の値に、Accessのパスが設定されているようです。
#VB6の場合、APIで参照することになると思います。
ShellExcecuteでやっても、/cmd以下を認識しませんでした。><
最終的にレジストリ取得でやってみて、
C:\PROGRA~1\MICROS~2\Office\MSACCESS.EXE
を取得できました。
短い名前で取得されたので心配でしたが、無事SHELLで起動できました。
KGさん、大吉末吉さん、ありがとうございました。
お二人に何か良いことがありますように。
あ、くまさんも。^^;
ああ、そうかShellExcecuteはファイルを直接実行ですもんね、、、
確かにヘルプにはAccess.exeの引数としてファイル名を渡すように
書いて有ります。
#よく調べずに投稿して申し訳ない orz
ACCESSは特別なのか知れませんが、
普通、CMD.EXE /C START EXCEL.EXEで起こせるものは、
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths
に登録されていますが。。。もし、そうなら、
ShellExecuteで、MSACCESS.EXEと引数nyao.mdb /cmd xxxxを指定して
実行できるのでは?
ACCESS、ないので分かりませんが。。。
スクリプトプログラマ様
>ShellExecuteで、MSACCESS.EXEと引数nyao.mdb /cmd xxxxを指定して
>実行できるのでは?
確かにそうだと思いテストしてみたところうまく行きました。
ひろりん様としては解決していますが、せっかく検証したので
過去ログに残すという意味で投稿しようかと思います。
例)
ShellExecute Me.hWnd, "Open", "MSACCESS.EXE", "C:\db1.mdb /cmd Test", "C:\", 1
#マジックナンバーを使っているのはご容赦下さい orz
ツイート | ![]() |