Access2000、2003、2007、2010全てのバージョンに対応した、ボタンクリック時にEXCEL.exeを探し、存在するパスを出力するを出力するコードを考えています。
今までFileSearchオブジェクトを使用していたのですが、2007以降は対応していない
と聞き困っているところです。PCによってProgram Filesフォルダに入っているとは
限らない為、Cドライブの中を全て調査したいのですが…
何か良いサンプルのあるサイト or 実際のコードはありませんか?
レジストリからパスを取得するのが早いですし、確実かと思います。
excel がインストールされていると、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe
に情報が作成されます。
レジストリへのアクセス方法は以下が参考になるかと思います。
FileSystemObjectを使えばできます
これはAccess2007以前でも利用できます
次はExcelVBAのサンプルコードですが、Accessでも同じコードが使えるともいます
方法1:App Paths キーを参照する方法
「HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\excel.exe」キーの既定の値
方法2:ProgID からアプリケーションのパスを取得する方法
「HKEY_LOCAL_MACHINE\Software\Classes\Excel.Application\CLSID」キーの既定の値
↓
「HKEY_LOCAL_MACHINE\Software\Classes\CLSID\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx}」キーの「LocalServer32」の値
<参考情報>
■ Office アプリケーションのパスを調べる方法
http://support.microsoft.com/kb/240794/ja
■ PowerShell: Excelの実行パスを取得する(Get-ItemProperty)
http://mtgpowershell.blogspot.com/2011/04/excelget-itemproperty.html
■ Application Registration (Windows)
http://msdn.microsoft.com/en-us/library/ee872121.aspx
その他にもCreateObjectでExcelのインスタンスを生成して Application.Path を得るという手も考えられますが、これはメモリを食うので環境次第と言ったところです
km1981>FileSystemObjectを使えばできます
自分が回答に書いたURLに書かれているコードすら見ていないとは、ほんとにいいかげんな回答者ですね(時間が無いので他の回答には突っ込みいれてませんけど、いいかげんな回答が多くてあまりにも目に付くのであえて苦言呈します)