• ベストアンサー

Excelのインストール状態を確認する。

AccessからExcelへデータを書き込む処理を作っています。 (Excel.Application オブジェクトを使用) 書き込む処理はできたのですが、Excelが存在しないコンピュータ ではエラーになりますよね(AccessがあってExcelが無いコンピュータ なんて少ないでしょうが・・・)。 そこで質問ですが、コンピュータにExcelがインストールされているかを 確認する方法(VBA)はありますか・・・? 一連の流れで、Excelの有無を確認し、ある場合と無い場合で処理を分岐 したいのですが。 どなたかよろしくお願いします。

  • pon_s
  • お礼率88% (101/114)

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

単純にon errorで飛ばして、エラーコードで判断すれば?

pon_s
質問者

お礼

回答ありがとうございます。 なるほど、簡単な方法ですね! AccessがあってExcelがないコンピュータなんて少ないでしょうが、 エラー処理以外で、Excelの有無を確認する方法があれば使ってみたい と思っています。 自分でも調べていますが、他に回答がいただけるかもう少し待ってみます。

その他の回答 (1)

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2

レジストリのエントリを表示するコマンド(reg.exe)を実行して、 Excel のエントリが表示されれば、Excel がインストールされています。 例 (Office 2003の場合) C:\>REG QUERY HKLM\Software\Microsoft\Office\11.0\Excel  ※Officeのバージョンに応じて、"11.0" 部分が異なります。   [バージョン]は、8.0とか9.0とか10.0とか11.0など。  

pon_s
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • エクセルオブジェクトの有無の確認方法

    VBAでマクロを作成してます。 指定した名前のオブジェクト(たとえばグラフ)が存在しない場合の処理を加えたいのですが、可能でしょうか?

  • VBA

    ACCESSのVBAにて、エクセルのデータ操作を行っています。 「sum」や「vlookup」などの関数が入ったセルをコピー&貼り付けしていく処理があります。 デバック―モードで実行するとエラーとなりませんが、 通常に実行するとエラーになってしまいます。 エラーの内容: アプリケーション定義またはオブジェクト定義のエラーです。 sleepを入れてみましたが、結果はかわらずでした。 どのような原因があるのでしょうか。

  • エクセルVBA でフォルダーの作成方法

    エクセルVBAでフォルダーの有無を確認する。 同じデレクトリ上で同一名のフォルダー、ファイルが存在するなら そのまま次の作業に進み、 デレクトリ、フォルダー、ファイルが存在しない場合は新規に 作成する。 新規に作成するのは MkDir "c:\white\DXF"で可能ですが、有無の判定の方法がわかりません。 初心者ですのでよろしくお願いします。 判定式がないと条件によってはエラーが生じます。

  • エクセルのブックはVBAでオブジェクトと言うことは

    VBAでアクセスではフォームの事をオブジェクトと言いますが エクセルのブックはVBAでオブジェクトと言うことはありますか?

  • excelの 実行時エラー

    VBAを組み込んだところ、エクセルを開くところで、実行時エラー1004が出るようになってしまいました。 アプリケーション定義またはオブジェクト定義のエラーとありますが、 メッセージBOXを終了すると、作業は続けられます。 何が問題なのかは、デバックが押せないので良くわからない状態です。 何かわかる方、ご教授願えませんでしょうか。

  • ACCESS2000で更新のあったテーブルの確認

    お世話になっております。 連続の投稿となり大変恐縮です。 他人が作成した、ACCESS2000+VBAのアプリケーションが あるのですが、更新の(Update、Insert等)あった テーブルを確認するにはどうしたら良いでしょうか? ACCESSの画面(多分データーベースオブジェクト)の 画面でのテーブルの「更新日時」はどうもテーブル に更新があっても新しくならないように見えます どなたか、教えて頂けるとありがたいです。

  • アクセスで他アプリから復帰した場合の再描画イベント

     エクセル、アクセスでVBAを自作している者です。コーディング暦5年以上で、フォーム画面も組めるようになりました。  いまだに理解が進まないのがイベントですが、その中で質問があります。  かなり時間のかかる処理(例えば30分とか1時間とか)を行う際に、例えば100件処理ごとに「今~件処理しました。」というようなメッセージをフォーム上に表示して、経過を知らせるとともにPCが固まっていないことを確認できるようにしています。(Application.Echoを通常はFalseにして、100件ごとにEcho=Trueに直してからRepaintメソッドで書いて、再びEcho=Falseに戻しています)  しかし、これもずっとアクセスを表示したままの場合にしか動きません。処理中に別の画面(エクセルとかエクスプローラーとか)を表示して、アクセスに戻ってくると、アクセスはVB実行中で画面の再描画はしてもらえず、処理がすべて終わるまでは白い画面(何も表示されない画面)などが表示されたままになってしまいます。フォームのActivateイベントにも仕込んでみましたが、アクセスに戻っただけではActivateイベントは発生しないようです。  Applicationオブジェクトや、CurrentProjectオブジェクトにはイベントがないようで、アクセスがアクティブになった場合に、再描画させることができるのかどうか、教えていただければ幸いです。

  • VBAでエクセルのバージョンを取得するには

    エクセルBOOKを開いているアプリケーションがエクセル2007以降かそうでないかを、その開かれているBOOKのVBAで取得するにはどのような記述をすればよろしいでしょうか? 2007以降か、その前かでコードを分岐させたいのです。 よろしくお願いします。

  • スタートアップ エクセル 同じ枠内で開くには?

    スタートアップにエクセルファイルを複数家れると、同じ枠内(アプリケーション内)で開いてしまいますが、 アクセスの場合は、個々の枠内で開かれます。 エクセルもアクセスのように、ファイルごとのアプリケーションで開きたいのですが、 どうすればいいですか? VBA等を使ったスタートアップを作成するしかないのでしょうか? ウィンドウズの標準機能では無理ですか?

  • ExcelからAccessのクエリを呼び出したい

    約20,000レコードほどのデータを一気にExcelのVBA上の選択SQLでEditとUpdateで処理しようと思ったのですが、一気に処理できるレコード数に制約があるようでエラーになりました。 Access内のクエリだとOKみたいですがExcelからAccessのクエリを呼び出す方法がわかりません。 どうしたらいいのでしょうか? よろしくお願いします。 バージョンは2002です。

専門家に質問してみよう