質問者
アプリからexcelが呼び出せない

質問
-
業務で必要なアプリがありまして、印刷用の書類を作成したりする際にexcelに吐き出すものですが、PCを買い替えたところ、excelが起動できなくなってしまいました。excelを直接起動すれば、通常通り使用できます。
OSは、Window10Pro(64bit版)で、Office Personal2016(法人向け)がプリインストールされているものです。
アプリの製造もとにもハードの製造もとにも確認したのですが、Microsoftの問題ということで解決にいたらず、困っています。再インストール棟は試し済みです。
アプリの製造元からは、以下のように言われました。
「当社のアプリは『GetTypeFromProgID関数』を利用し、Excelを呼び出しますが、『null』となり呼び出せず、『excelがインストールされていません。』のメッセージが表示されてしまう。」
また、エラーログには、以下のような内容がかかれていました。
型 'System.__ComObject' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel.Application' にキャストできません。
IID '{000208D5-0000-0000-C000-000000000046}' が指定されたインターフェイスの
COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、
この操作に失敗しました: インターフェイスが登録されていません
(HRESULT からの例外:0x80040155)。
小さな事務所のため、システム担当はおらず、私自身も詳しくなく、いろいろ検索してみて、レジストリエディタで
他のバージョンのものが入っていないかなど確認したのですが、1.9以外ものは見つかりませんでした。
アドバイスなどいただけたら幸いです。よろしくお願いします。
すべての返信
-
ほんださん2383 さん、
詳細な状況が分からないので、断定的なことは申せませんが・・・
Excel が入っている(Excel が起動できるという事実がある)にもかかわらず、Excel が起動できないのは、当該アプリケーションの製造元に問題があるようにおも思われます。Excel の ProgID が取得できないので(関数の実行結果が null なので)Excel を起動できないというのは、先方(ソフトの製造元)の都合であり、責任を回避できる(Microsoft の問題である)とは思えません。差し支えなければ、ソフトの名前と製造元をお教えいただけませんでしょうか?
以上です。Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html
-
例えば
https://devlights.hatenablog.com/entry/20070706/p1
にあるような GetTypeFromProgID で Excel のインストールを判定する最小化されたプログラムを実行してみて、それで正常に判定できるのであればアプリ側の問題(GetTypeFromProgID の使い方が間違っているとか)でしょう。
Hebikuzure aka Murachi Akira
-
Hebikuzure aka Murachi Akira さん、
どのようにして Excel を起動するかはアプリ側の問題だと思います。GetTypeFromProgID を使うのは、その手段の1つだと思います。
言いたかったことは・・・
実装手段はアプリ側に任されているので、結果として Excel が起動できないなら、その責はアプリ側にあるだろう、ということです。
すみません、素人がエラそうなことを書きました・・・ <m(__)m>Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html
-
最近のプリインストール Office はストアアプリ(UWP)になっているケースがあります。
この場合、管理者権限で動いているアプリからは COM の初期化に失敗するようです。
これは、Office か、Packaged COM の制限と予想されます。(不具合の可能性もありますが、言い切れる根拠はありません)もし、これに当てはまる場合は管理者権限で起動しないようにするか、デスクトップ版の Office を再インストールするかです。
(以前、同じような話を MSDN フォーラムでしたときのスレッド)- 編集済み AzuleanMVP 2019年2月6日 12:27
- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2019年2月8日 8:21
-
Azulean さん、
有用な情報をありがとうございます(Office で UWP のものがあるとは知りませんでした)。
ほんださん2383 さん、
お使いの Excel が UWP であるかを確認なさってはいかがでしょう?
ストアアプリのように表示されたら、UWP です。
次の記事が参考になると思います。
Office2016 Microsoft ストア版(UWP版)とパッケージ版の違い
以上です。Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html
-
ほんださん2383 さん、
ソフトの情報をお教えいただき、ありがとうございます。
気になるのは、Azulean がお書きになっているとおり、
お使いの Office がストアアプリ(UWP)で、
「建設業.NET」の実行に管理者権限が必要なら、
ご希望の動作ができない場合があるかもしれない、ということです。
管理者権限が必要かどうかは㈱クリックスさんの作りに依存するので、ユーザー側では(要望は出せても)手は出せない(改変できない)と思います。
なので、まずはお使いの Office がストアアプリ(UWP)であるかと確認する必要があろうかと思います。
確認方法は次の記事をご参照ください。
Microsoft Office 2016 デスクトップアプリ版とストアアプリ版の見分け方
(私が使っているのは Office 2016 のデスクトップ版なので、「プログラムと機能」内に見つかりました)
ご確認ください。Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html
-
ほんださん2383 さん、
Excel がインストールされているかを判別するソフトを作ってみました。
元にしたコードは Hebikuzure aka Murachi Akira さんが例示されている URL のものです。
OneDrive で共有したので、ダウンロード&インストールしてお使いいただければ幸いです。
Check_If_Excel_Installed_Setup.zip
小さなソフトで、実行画面は次のとおりです。
デスクトップ・アプリの Office 2016 が入っているので、上の結果となりました。
ストア・アプリ(UWP)の Office は持っていないので、どのような結果になるかは不明です。
なお、コントロールパネルの「プログラムと機能」でアンインストールできます。
以上です。Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html
-
ほんださん2383 さん、
拙作ソフトをお試しいただき、また結果をお知らせいただき、ありがとうございました。
ソフトを直して、デスクトップ版、ストアアプリ版、それぞれに応じた表示にしてみました。
前のをアンインストールする必要はありません。そのままインストールしてみてください。
Check_If_Excel_Installed_Setup.zip
今回の件ではとても勉強になりました。
こちらこそ、ありがとうございました。Ashidacchi -- https://ssl01.rocketnet.jp/hokusosha.com/default.html