• ベストアンサー

AccessVBA 複数バージョンExcelが混在する環境で、任意のバージョンの起動したい

いつもお世話になっております。 Access97 WinXPを使用しております。 当方開発環境にExcel97,2000,XPがインストールされております。 AccessVBA上にてCreateObjectする際に Set oXl = CreateObject("Excel.Application") 'excel起動 という風にActiveXオブジェクトとしてExcelを起動しているのですが、 この際、Excel2000が起動されます。 おそらく最後にインストールしたバージョンが2000(だったと思います) だからなのだと思うのですが、 上記のソースのまま、 起動するExcelのバージョンを任意に変更することはできないのでしょうか。 起動するアプリケーションのフルパスを指定することで起動はできるのだとは思うのですが 客先環境のExcelのインストール先ディレクトリと、 当方環境のExcelのインストール先ディレクトリが異なるため、 フルパスの指定以外で起動できないか、ご教示いただきたく、質問させていただきました。 何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dee_honda
  • ベストアンサー率53% (26/49)
回答No.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/

o_w_nakazaki
質問者

お礼

ご返答を頂き、ありがとうございます。 CLSIDを調査してみたのですが、 どのバージョンの値も同じ様でした。 ご提示いただいたリンクを元に いろいろ試してみたいと思います

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

Set oXl = CreateObject("Excel.Application.10") のように(10は、2002,OfficeXP)バージョンを指定できると思います。 この場合のバージョン番号は、 Application.version で調べてみてください。

o_w_nakazaki
質問者

お礼

早々のご回答、ありがとうございます。 返事がなぜか送信出来ずに今まで経ってしまいました。すみません ご提示いただいた方法で起動してみたのですが どのバージョン番号を指定してもExcel2000が起動してしまいます。 もう少し調査してみます。 ありがとうございました。

noname#22222
noname#22222
回答No.1

客先環境でも、複数のバージョンが混在していることもあるのではないでしょうか? そういう場合、バージョンの選択基準が問題になるのではと思います。 ここは、単純に、XXXXX.ini ファイルを配布するようにしたら... ExcelPath= XXXXXXXXXXX Accessのトップメニュー等に、メモ帳を開き ini ファイル を更新できるコマンドボタンでも配置しておけば宜しいかと。

o_w_nakazaki
質問者

お礼

早々のご回答、ありがとうございます。 複数開発業務においてActiveXオブジェクトでのExcel起動を行っており、呼び方も Set oXl = CreateObject("Excel.Application") 'excel起動 と、同じように呼び出しているので、 "Excel.Application" で呼び出されるアプリケーションを指定できる方法がどこかにないかなと思い質問した次第です。 今後iniファイルでパスを持つ方針となると、環境ごとにiniファイルの設定する必要があるのではないかと 思いますので、できれば避けたいと考えております。

関連するQ&A

  • VBでエクセルのバージョンを指定して開く

    PCにEXCEL2002と2013がインストールされています。 VBでエクセルを起動し、マクロを実行したいのですが、その際に起動するエクセルのバージョンを指定したいと考えています。 以下でやると標準設定のEXCELが開いてしまい、バージョンの指定ができません。 Dim xlApp As New Excel.Application() Dim xlBooks As Excel.Workbooks xlBooks = xlApp.Workbooks xlBooks.Open("C:\test.xls") xlApp.Visible = True xlApp.Run("test.xls!macro") なにか方法はありますでしょうか?

  • VBによる複数バージョンのEXCELがインストールされているマシンでのオブジェクト起動について

    マシンには EXCEL95とEXCEL2003がインストールされています GetObject("", "excel.Application") で起動するとEXCEL95で起動しようとしてしまいます EXCEL2003で起動するようにするには どのようにすればよいのでしょうか ご存知の方いらっしゃいましたら教えてください

  • AccessからExcelの起動、Excel単独起動と違う動作になる。

    お世話になります。 Access2007からExcel2003を起動しようとしています。 実際には、AccessVBAより、以下のような呼び方をしています。 ----------------------------------- Dim xlApp As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True xlApp.AutomationSecurity = 2 Set xlBook = xlApp.Workbooks.Open("C:\分析.xls") Set xlBook = Nothing Set xlApp = Nothing ----------------------------------- (手動で閉じる) 大体おおまかにこんな感じで作ってあります。 起動するExcelにはボタンが張り付けてあり 押すと処理が開始されます。 実際、起動そのものはされるのですが、同一ファイルにて 1.AccessからExcelを起動してボタンを押す 2.Excelを直接起動してボタンを押す の場合、Accessからの起動では、うまく処理が行われません。 直接起動でうまくいくので、ExcelのVBAの問題ではなく、 起動時の指定、または起動のやり方がまずいのでは、と とらえていますが、調べてもわからない状態が続いています。 (開き方や、マクロの呼び出し等方法を変えましたが  うまくいきません) Excelでは主に、ピポットテーブルを利用してPasteSpecialで値を 設定している作りになっています。 Access2007でもAccess2003でも同じだったと思います。 同様な経験をされ解決した方、方法をご存じの方、 ぜひ教えていただければと思います。

  • アクセスからエクセルの起動ができない

    アクセス2000とエクセル2000で、アクセスからエクセルを起動するマクロを作りましたが、アクセス2000とエクセルXPを使っている環境では、「"RunApp/アプリケーションの実行"アクションを使ってアプリケーションを起動できません。アプリケーションのパスが正しく指定されていないか、アプリケーションのコンポーネントが不足しています。windowsエクスプローラまたはファイルマネージャで、アプリケーションのパスを確認してください」とメッセージが出て、起動できません。 ちなみに、OSはwinXP、オフィスは、XPスタンダードに、アクセス2000をあとからインストールしています。

  • EXCELを開こうとすると自動的にPDFを起動する

    環境: windowsXP Excel: Excel2002 ソフト: PDF8      「いきなりPDF」 日常的に使っていたExcelファイルですが、開こうとすると自動的にPDFが起動され、「Adobe Readerで開けませんでした。」というメッセージが出てしまう。Program fileからExcelを起動してからファイルを指定すれば開けるのだがこれでは仕事にならない。PDF8を削除するとOKだが再度PD8をインストールするとやはりダメ。ご助言を。

  • EXCEL97のバージョンについて

    Windows2000(SP2)上でEXCEL97を利用して帳表を出力するマクロを作成しました。 EXCEL97 SR-2がインストールされた複数のマシンでマクロを実行したところ 特定のマシンのみHPageBreaksのAddでアプリケーションエラーを起こします。 EXCELの「ヘルプ-バージョン情報」で表示させると全てSR-2と表示されますが 「システム情報-ソフトウェアの環境-実行中のタスク」のファイル日付がアプリ ケーションエラーを起こすマシンのみ1997/08/13になっており、他のマシンは 1997/09/23になっています。 SR-2が正しくあたっていないのかと思ったのですが、EXCEL97のバージョンを 細かく調べる方法がわかりません。 EXCEL97のバージョンを細かく調べる方法はありますか?

  • EXCEL VBAからIEを起動する際のバージョンについて

    下記コーディングでEXCELのVBAよりIEを起動する際、IE5.0では正常に動作するのですが、他のバージョン(IE5.5等)ではうまく起動出来ません? 良い解決策があれば教えていただきたいのですが。 Dim IE As Object Dim URL As String Set IE = CreateObject("InternetExplorer.Application") URL = "ftp://XXXXXXXX/999/" With IE .Navigate2 URL .Visible = True .Height = 400 .Width = 400 .Top = 0 .Left = 0 End With Windows98/Excel2000

  • 2003,2007混在環境下で。

    Windows版office2003,2007が混在する環境下での優先順位を変更する方法があれば教えていただきたく質問しました。 OSはWindows XPで、Office 2003があらかじめインストールされています。そこへ、Office 2003を残したまま新たにOffice 2007をインストールしました。 この環境下では、2003で保存したファイルであってもエクセルファイルやワードファイルなどを開くと、優先的に2007から起動されます。あらかじめ、2003を起動しておけば、2003から開きます。 目的の環境としては、ファイルをクリックした時などは、2003で開きたいです。2007はたまに利用したときがある程度なので。つまり、2003と2007の優先順位を逆にしたいです。 良い方法がありましたら、教えてください。 よろしくお願いします。

  • ExcelのVBAで他のファイルを起動する時の指定

    ExcelのVBAで他のファイルを起動する時の指定 ExcelのVBAで他のファイルを起動する時の指定の仕方で、 例えば同ディレクトリや一つ下の階層のファイルとかの場合、 フルパス以外で簡単に指定する方法はあるのでしょうか? 現在フルパスにて記述しているのですが、 ファイルを移動したりした時に、またそちらでのフルパスに 修正しないといけなくなるので手間がかかって困っています。 何かいい方法はないでしょうか? Excelは2000を使っています。

  • Excel バージョンダウン?

    Windows 8が発売されたようですが、当方など今でもxpを使用しています。次期購入でも7が良いとこだと思っていますが、xpで作成したExcelは、8、または7では読み取れるが、Windows 8、7で作成したExcelは、バージョンダウンしなければ、xpでは作業も出来ないのですが、バージョンダウンは簡単に出来るものなのでしょうか?8、7で作成したExcelは当たり前ですが、それ相応のExcelのバージョンですが?

専門家に質問してみよう