- ベストアンサー
AccessVBA 複数バージョンExcelが混在する環境で、任意のバージョンの起動したい
いつもお世話になっております。 Access97 WinXPを使用しております。 当方開発環境にExcel97,2000,XPがインストールされております。 AccessVBA上にてCreateObjectする際に Set oXl = CreateObject("Excel.Application") 'excel起動 という風にActiveXオブジェクトとしてExcelを起動しているのですが、 この際、Excel2000が起動されます。 おそらく最後にインストールしたバージョンが2000(だったと思います) だからなのだと思うのですが、 上記のソースのまま、 起動するExcelのバージョンを任意に変更することはできないのでしょうか。 起動するアプリケーションのフルパスを指定することで起動はできるのだとは思うのですが 客先環境のExcelのインストール先ディレクトリと、 当方環境のExcelのインストール先ディレクトリが異なるため、 フルパスの指定以外で起動できないか、ご教示いただきたく、質問させていただきました。 何卒よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Set oXl = CreateObject("Excel.Application.8") のようにする場合は、まず、 HKEY_CLASSES_ROOT\Excel.Application.8のCLSID値を確認してください。 アプリケーションによりますが、バージョンを指定したとしても、 最後に導入したバージョンが起動してしまうものがあります(Wordなど) CLSID値が最新バージョンのものに書き換わっていた場合は、 Excel97のCLSID値をOffice97の純粋環境で確認の上、自己責任でレジストリを書き換えるか、 もしくは、 フルパス指定でExcel97を起動してから、GetObjectでオブジェクトを取得する方法もあります。 あまり参考になりませんが。 http://support.microsoft.com/kb/214388/
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Set oXl = CreateObject("Excel.Application.10") のように(10は、2002,OfficeXP)バージョンを指定できると思います。 この場合のバージョン番号は、 Application.version で調べてみてください。
お礼
早々のご回答、ありがとうございます。 返事がなぜか送信出来ずに今まで経ってしまいました。すみません ご提示いただいた方法で起動してみたのですが どのバージョン番号を指定してもExcel2000が起動してしまいます。 もう少し調査してみます。 ありがとうございました。
客先環境でも、複数のバージョンが混在していることもあるのではないでしょうか? そういう場合、バージョンの選択基準が問題になるのではと思います。 ここは、単純に、XXXXX.ini ファイルを配布するようにしたら... ExcelPath= XXXXXXXXXXX Accessのトップメニュー等に、メモ帳を開き ini ファイル を更新できるコマンドボタンでも配置しておけば宜しいかと。
お礼
早々のご回答、ありがとうございます。 複数開発業務においてActiveXオブジェクトでのExcel起動を行っており、呼び方も Set oXl = CreateObject("Excel.Application") 'excel起動 と、同じように呼び出しているので、 "Excel.Application" で呼び出されるアプリケーションを指定できる方法がどこかにないかなと思い質問した次第です。 今後iniファイルでパスを持つ方針となると、環境ごとにiniファイルの設定する必要があるのではないかと 思いますので、できれば避けたいと考えております。
お礼
ご返答を頂き、ありがとうございます。 CLSIDを調査してみたのですが、 どのバージョンの値も同じ様でした。 ご提示いただいたリンクを元に いろいろ試してみたいと思います