C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[11]: エクセル帳票のエラー


(過去ログ 140 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■81884 / inTopicNo.1)  エクセル帳票のエラー
  
□投稿者/ 遠藤 (1回)-(2016/11/18(Fri) 18:26:16)

分類:[.NET 全般] 

お世話になります。初めての投稿になります。よろしくお願い致します。

VB.NETで開発したシステムでエクセル帳票があるのですが、今まで動いていた環境で突然下記のエラーが出て、エクセル帳票が出力できなくなりました。

「Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。」

PCの状態は以下のとおりです。
・エクセル単独で起動は可能 → エクセルがアンインストールされているわけではない。
・他のエクセル帳票もあるが、それらも出力できない。

このような問題の原因か、原因と思われる点など、ご教授いただけますでしょうか。よろしくお願い致します。
引用返信 編集キー/
■81886 / inTopicNo.2)  Re[1]: エクセル帳票のエラー
□投稿者/ 魔界の仮面弁士 (969回)-(2016/11/18(Fri) 18:53:15)
No81884 (遠藤 さん) に返信
> 「Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。」

複数バージョンの Excel がインストールされているか、
または、開発環境と実行環境で相互運用機能アセンブリの
バージョンが一致していないのではないでしょうか。

PIA をインストールしなおしてみては如何でしょう。


HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}

に記録されているタイプライブラリバージョンはどうなっていますか?

1.0 → Excel 5.0
1.1 → 不明。Excel 95(7.0)かも。
1.2 → Excel 97(8.0)
1.3 → Excel 2000(9.0)
1.4 → 多分欠番
1.5 → Excel 2002(XP,10.0)/2003(11.0)
1.6 → Excel 2007(12.0)
1.7 → Excel 2007(14.0)
1.8 → Excel 2013(15.0)

# Excel 2016(16.0) は知らないです。1.9 なのかな。


あとはこのあたり。
https://blogs.msdn.microsoft.com/dau-blog/2012/04/20/how-to-solve-unable-to-cast-com-object-of-type-microsoft-office-interop-excel-applicationclass-to-interface-type-microsoft-office-interop-excel-_application/
引用返信 編集キー/
■81888 / inTopicNo.3)  Re[2]: エクセル帳票のエラー
□投稿者/ 遠藤 (2回)-(2016/11/18(Fri) 21:42:48)
魔界の仮面弁士様へ

ご教授ありがとうございます。

@複数バージョンのエクセルがインストールされているか
 手元にPCがないので明日以降に調査します。

Aタイプライブラリバージョン
・動作しなくなったPCはエクセル2013で、バージョンが「1.8」
・開発環境はエクセル2016で、バージョンはおっしゃるとおり「1.9」でした。

教えていただきたいのですが、このバージョンが1.8と1.9で違う場合、エクセル帳票プログラムは共通のものでは動作しない、ということになりますか?

−−−−−





No81886 (魔界の仮面弁士 さん) に返信
> ■No81884 (遠藤 さん) に返信
>>「Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。」
>
> 複数バージョンの Excel がインストールされているか、
> または、開発環境と実行環境で相互運用機能アセンブリの
> バージョンが一致していないのではないでしょうか。
>
> PIA をインストールしなおしてみては如何でしょう。
>
>
> HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}
>
> に記録されているタイプライブラリバージョンはどうなっていますか?
>
> 1.0 → Excel 5.0
> 1.1 → 不明。Excel 95(7.0)かも。
> 1.2 → Excel 97(8.0)
> 1.3 → Excel 2000(9.0)
> 1.4 → 多分欠番
> 1.5 → Excel 2002(XP,10.0)/2003(11.0)
> 1.6 → Excel 2007(12.0)
> 1.7 → Excel 2007(14.0)
> 1.8 → Excel 2013(15.0)
>
> # Excel 2016(16.0) は知らないです。1.9 なのかな。
>
>
> あとはこのあたり。
> https://blogs.msdn.microsoft.com/dau-blog/2012/04/20/how-to-solve-unable-to-cast-com-object-of-type-microsoft-office-interop-excel-applicationclass-to-interface-type-microsoft-office-interop-excel-_application/
引用返信 編集キー/
■81890 / inTopicNo.4)  Re[3]: エクセル帳票のエラー
□投稿者/ 魔界の仮面弁士 (972回)-(2016/11/18(Fri) 21:59:16)
2016/11/18(Fri) 22:15:07 編集(投稿者)

No81888 (遠藤 さん) に返信
> ・開発環境はエクセル2016で、バージョンはおっしゃるとおり「1.9」でした。

Excel 2016 で追加されたメンバーがあって、それが下位バージョンには存在しないために
問題を引き起こしているのかも知れません。2016 を使った事がないので未確認ですが。



> エクセル帳票プログラムは共通のものでは動作しない、ということになりますか?

下位バージョンの Excel PIA でコンパイルする分には大丈夫だと思います……多分?

または、参照設定無しでレイトバインドなコードにするかですね。
解放の手間を考えると、参照設定無しはお奨めしませんが。


2016 を使った事が無いので保証はできかねますが、
下位バージョンの Excel PIA でコンパイルしたものを
上位バージョンの Excel 環境で実行させる分には、
概ね動作します。(逆は NG ですが)


ただ、過去の Excel バージョンでも、Sub が Function に変更されてみたり、
DispId が同じまま引数定義が変更されたメソッドが存在していたので
機能によっては、バージョン依存のコードを書く必要が生じるかも知れません。


いずれにせよ、十分なテストは必要でしょうね。


No81886 >
> 1.6 → Excel 2007(12.0)
> 1.7 → Excel 2007(14.0)

訂正:
1.7 → Excel 2010(14.0)
引用返信 編集キー/
■81891 / inTopicNo.5)  Re[4]: エクセル帳票のエラー
□投稿者/ 遠藤 (4回)-(2016/11/18(Fri) 22:05:02)
魔界の仮面弁士様へ

ご回答ありがとうございます。こんなに早くご回答いただき、本当にありがとうございます。

エクセル2016が入ったPCでコンパイルしていますので、まずはエクセル2013で動作検証してみます。
それで同様のエラーが起きましたら、2番目のアドバイスの下位バージョンのエクセルPIAでのコンパイルも検証してみます。
またご報告致します。

−−−−−



No81890 (魔界の仮面弁士 さん) に返信
> ■No81888 (遠藤 さん) に返信
>>・開発環境はエクセル2016で、バージョンはおっしゃるとおり「1.9」でした。
>
> Excel 2016 で追加されたメンバーがあって、それが下位バージョンには存在しないために
> 問題を引き起こしているのかも知れません。2016 を使った事がないので未確認ですが。
>
>
>
>>エクセル帳票プログラムは共通のものでは動作しない、ということになりますか?
>
> 下位バージョンの Excel PIA でコンパイルする分には大丈夫だと思います……多分?
>
> または、参照設定無しでレイトバインドなコードにするかですね。
> 解放の手間を考えると、参照設定無しはお奨めしませんが。
引用返信 編集キー/
■81905 / inTopicNo.6)  Re[5]: エクセル帳票のエラー
□投稿者/ 遠藤 (5回)-(2016/11/21(Mon) 19:57:55)
魔界の仮面弁士様へ

エクセル2016が入ったPCでコンパイルしていますので、まずはエクセル2013で動作検証してみます。
→エクセル2013上で動作しました。

また、同一PCに複数バージョンの Excel はインストールされていませんでした。
ただし、Office2003のパワーポイントがインストールされていましたのでアンインストールしてみましたが、現象は改善されませんでした。
同一事務所にある別のPCにインストールしてみても現象は改善されませんでした。

なお、他の場所にあるPCにインストールしたところ、正常にエクセル出力できました。
ネットワーク関連の設定がこの問題に影響することなどはありますでしょうか?

システム構成の説明が遅くなって申し訳ないのですが、

クラウドサービス上にPostgresのDBがあり、遠隔地からC/S接続でシステムを使用しています。
拠点AではどのPCからもエラー
拠点BにインストールしたPCでは正常出力

という状況です。
引用返信 編集キー/
■81906 / inTopicNo.7)  Re[6]: エクセル帳票のエラー
□投稿者/ 魔界の仮面弁士 (975回)-(2016/11/21(Mon) 21:35:48)
2016/11/21(Mon) 21:41:21 編集(投稿者)

No81905 (遠藤 さん) に返信
> エクセル2016が入ったPCでコンパイルしていますので、まずはエクセル2013で動作検証してみます。
> →エクセル2013上で動作しました。

Excel 2013 環境でコンパイルして、Excel 2013 環境で実行 → OK
Excel 2013 環境でコンパイルして、Excel 2016 環境で実行 → 基本的には動くはず
Excel 2016 環境でコンパイルして、Excel 2013 環境で実行 → 動くかも知れませんがあまりお奨めしません
Excel 2016 環境でコンパイルして、Excel 2016 環境で実行 → OK


どうしても、COM インターフェイスのバージョン依存性をクリアできない場合は、
参照設定を用いず、Dim xlApp As Object = CreateObject("Excel.Application")
などとして、いわゆる「レイトバインド」で呼び出す手法もあります。
デメリットも多いので、手放しでお奨めはできませんけれども。


また、.NET Framework 4 以降の場合には、コンパイル時に
「相互運用型の埋め込み」が True / False のいずれになっているかも
確認しておいてください。


> ただし、Office2003のパワーポイントがインストールされていましたのでアンインストールしてみましたが、現象は改善されませんでした。

たまたま旧バージョンが混在している端末があったというだけで、
すべての PC がそうだというわけでは無いのですよね?


異なるバージョンの共存は推奨されていせんが、どうしても Office の複数バージョンを
インストールしたいのであれば、「リリースされた順」に導入する必要があります。
https://support.office.com/ja-JP/article/6ebb44ce-18a3-43f9-a187-b78c513788bf

もし、後から古いバージョンを導入してしまっていた場合、古いバージョンの
アンインストールと、最新版の修復セットアップを実施することで
復元されるケースもありますが、確実ではありません。たとえアンインストールを
実施したとしても、依存ファイルのバージョンやレジストリの不整合が残ってしまう
可能性を捨て切ることができず、修復箇所の調査が困難になりがちです。

バージョン混在環境において、修復セットアップでも改善しないようであれば、
手間なようであっても、OS ごと初期化して最初からインストールし直すことを
お奨めしています。その方が結果的に原因の切り分けが早く済むことが多いので…。

クリーンインストールで解決するならそれで良いわけですし、仮に
クリーンインストールしても問題が継続していたとしても、それならそれで
バージョン依存の問題では無いということが明確になりますからね。


一応、参考資料としてこんなものも。
http://yutakyunmnote.blogspot.jp/2012/09/cexcelwordcominvaildcastexception.html
http://stackoverflow.com/questions/28066719/unable-to-cast-com-object-of-type-microsoft-office-interop-excel-applicationcla



> ネットワーク関連の設定がこの問題に影響することなどはありますでしょうか?
可能性としては低い気がします。とはいえ、無いと言いきるだけの根拠もありません。

既存環境をクリーンインストールしなおすことが困難で、かつ、
もしも本当に、拠点Aと拠点Bの違いがネットワークだけの問題であるのなら、
同等の環境を仮想化環境上で再構築し、追調査してみては如何でしょうか。



>> 「Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。」

『Application オブジェクト』は、バージョンごとに差異があります。
変更されたメンバーや追加されたメンバーもありますので、バージョン混在で
正しく動作するように作りこむには、それなりの調査力と検証工数が必要です。

当方は Excel 2016 を調達していないので、2013 との違いは把握していませんが、
たとえば 2007 → 2010 → 2013 だけみても、これだけの改変があります。



=================
2010 → 2013 における Excel.Application オブジェクトの仕様変更
-----------------
下記のメンバーに不可視属性が付与されました
 ・DispId(&H49c) : EnableAnimations プロパティ
 ・DispId(&H0d4) : SaveWorkspace メソッド
 ・DispId(&H70f) : ShowWindowsInTaskbar プロパティ
 ・DispId(&Hae2) : SaveISO8601Dates プロパティ
下記のメンバーが追加されました
 ・DispId(&Hbb2) : ShowQuickAnalysis プロパティ
 ・DispId(&Hbb3) : QuickAnalysis プロパティ
 ・DispId(&Hbb4) : FlashFill プロパティ
 ・DispId(&Hbb5) : EnableMacroAnimations プロパティ
 ・DispId(&Hbb6) : ChartDataPointTrack プロパティ
 ・DispId(&Hbb7) : FlashFillMode プロパティ
 ・DispId(&Hbb8) : MergeInstances プロパティ
 ・DispId(&Hc56) : EnableCheckFileExtensions プロパティ


=================
2007 → 2010 における Excel.Application オブジェクトの仕様変更
-----------------
下記のメンバーに不可視属性が付与されました
 ・DispId(&H59e) : Assistant プロパティ
下記のメンバーのシグネチャが変更されました
 ・MacroOptions メソッド
  ・2007 の場合
   ・引数10個なメソッドとして実装されています
   ・引数10個版の DispId は &Hf46f、メソッド名は "MacroOptions" です
  ・2010 の場合
   ・引数11個版が追加され、引数10個版には不可視属性が付与されました
   ・引数10個版の DispId は &H46f、COM でのメソッド名は "_MacroOptions"、PIA では "MacroOptions" です
   ・引数11個版の DispId は &Had2、COM でのメソッド名は "MacroOptions"、PIA では "MacroOptions2" です
下記のメンバーが追加されました
 ・DispId(&Had0) : FileExportConverters プロパティ
 ・DispId(&Had4) : SmartArtLayouts プロパティ
 ・DispId(&Had5) : SmartArtQuickStyles プロパティ
 ・DispId(&Had6) : SmartArtColors プロパティ
 ・DispId(&Had7) : AddIns2 プロパティ
 ・DispId(&Had8) : PrintCommunication プロパティ
 ・DispId(&Had2) : MacroOptions メソッド(※上記シグネチャ変更を参照)
 ・DispId(&Hada) : UseClusterConnector プロパティ
 ・DispId(&Hadb) : ClusterConnector プロパティ
 ・DispId(&Hadc) : Quitting プロパティ
 ・DispId(&Hadd) : Dummy22 プロパティ
 ・DispId(&Hade) : Dummy23 プロパティ
 ・DispId(&Hadf) : ProtectedViewWindows プロパティ
 ・DispId(&Hae0) : ActiveProtectedViewWindow プロパティ
 ・DispId(&Hae1) : IsSandboxed プロパティ
 ・DispId(&Hae2) : SaveISO8601Dates プロパティ
 ・DispId(&Hae3) : HinstancePtr プロパティ
 ・DispId(&Hae4) : FileValidation プロパティ
 ・DispId(&Hae5) : FileValidationPivot プロパティ
状況依存ヘルプのコンテキストIDが前面的に刷新されました
引用返信 編集キー/
■81909 / inTopicNo.8)  Re[7]: エクセル帳票のエラー
□投稿者/ 遠藤 (6回)-(2016/11/21(Mon) 23:40:56)
魔界の仮面弁士様へ

いつも詳しい回答をこんなに早くいただき、どうもありがとうございます。

> Excel 2013 環境でコンパイルして、Excel 2013 環境で実行 → OK
> Excel 2013 環境でコンパイルして、Excel 2016 環境で実行 → 基本的には動くはず
> Excel 2016 環境でコンパイルして、Excel 2013 環境で実行 → 動くかも知れませんがあまりお奨めしません
> Excel 2016 環境でコンパイルして、Excel 2016 環境で実行 → OK
>
>
> どうしても、COM インターフェイスのバージョン依存性をクリアできない場合は、
> 参照設定を用いず、Dim xlApp As Object = CreateObject("Excel.Application")
> などとして、いわゆる「レイトバインド」で呼び出す手法もあります。
> デメリットも多いので、手放しでお奨めはできませんけれども。

こちらは最終手段にとっておきます。
お恥ずかしながら、レイトバウンドという方法をまだ理解しておりません。



> また、.NET Framework 4 以降の場合には、コンパイル時に
> 「相互運用型の埋め込み」が True / False のいずれになっているかも
> 確認しておいてください。

確認しておきます。



>>ただし、Office2003のパワーポイントがインストールされていましたのでアンインストールしてみましたが、現象は改善されませんでした。
>
> たまたま旧バージョンが混在している端末があったというだけで、
> すべての PC がそうだというわけでは無いのですよね?

そうですね。少なくとも当該PCはそうだった、というだけで、2台目のPCはそのような環境は未確認です。
(詳細把握しておらず、すみません。お客様側にあるPCで直接確認できない点がございます)



> 異なるバージョンの共存は推奨されていせんが、どうしても Office の複数バージョンを
> インストールしたいのであれば、「リリースされた順」に導入する必要があります。
> https://support.office.com/ja-JP/article/6ebb44ce-18a3-43f9-a187-b78c513788bf
>
> もし、後から古いバージョンを導入してしまっていた場合、古いバージョンの
> アンインストールと、最新版の修復セットアップを実施することで
> 復元されるケースもありますが、確実ではありません。たとえアンインストールを
> 実施したとしても、依存ファイルのバージョンやレジストリの不整合が残ってしまう
> 可能性を捨て切ることができず、修復箇所の調査が困難になりがちです。
>
> バージョン混在環境において、修復セットアップでも改善しないようであれば、
> 手間なようであっても、OS ごと初期化して最初からインストールし直すことを
> お奨めしています。その方が結果的に原因の切り分けが早く済むことが多いので…。
>
> クリーンインストールで解決するならそれで良いわけですし、仮に
> クリーンインストールしても問題が継続していたとしても、それならそれで
> バージョン依存の問題では無いということが明確になりますからね。

最終的にクリーンインストールもしてもらえるように進めてみます。
まずは「最新版の修復セットアップ」をしてみます。



> 一応、参考資料としてこんなものも。
> http://yutakyunmnote.blogspot.jp/2012/09/cexcelwordcominvaildcastexception.html
> http://stackoverflow.com/questions/28066719/unable-to-cast-com-object-of-type-microsoft-office-interop-excel-applicationcla

上のページのエラーメッセージがワードのことですが酷似しています。
エクセル関連のレジストリ「HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}」の調査は「1.8 → Excel 2013(15.0)」でした。
エクセル2016環境でコンパイルしたプログラムは私の自宅にあるエクセル2013環境でも動作しました。

レジストリの画面コピーを送ってもらい確認しましたが、オフィス2003のレジストリが残っている状態には見えませんでした。
レジストリからは消えているかもしれませんので、繰り返しになりますが「「最新版の修復セットアップ」をしてもらいます。



>>ネットワーク関連の設定がこの問題に影響することなどはありますでしょうか?
> 可能性としては低い気がします。とはいえ、無いと言いきるだけの根拠もありません。
>
> 既存環境をクリーンインストールしなおすことが困難で、かつ、
> もしも本当に、拠点Aと拠点Bの違いがネットワークだけの問題であるのなら、
> 同等の環境を仮想化環境上で再構築し、追調査してみては如何でしょうか。

そうですよね。エクセルなので、ネットワークやウイルス対策系ではなさそうですよね。
拠点で共通の動きなので、F/Wなども考えたのですが、エクセルだから違うかなと私も思いました。
オフィス単独で起動はするので、MSの認証系に絡む問題でもなさそうでした。
仮想環境化して調査できるか確認してみます。
また、当該PCを他の場所に移動できるのであれば、どういう結果になるかも見てみます。

大変お手数をおかけしておりますが、上記の結果をまたご報告させていただきます。

下に記載いただいな内容も勉強になります。ありがとうございます。
技術者として、魔界の仮面弁士様のスキルと情報力の博識ぶりに、脱帽しています。
こんなすごい方ってどのような仕事をさせているのかな、と気になっています(笑)




> >> 「Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。」
>
> 『Application オブジェクト』は、バージョンごとに差異があります。
> 変更されたメンバーや追加されたメンバーもありますので、バージョン混在で
> 正しく動作するように作りこむには、それなりの調査力と検証工数が必要です。
>
> 当方は Excel 2016 を調達していないので、2013 との違いは把握していませんが、
> たとえば 2007 → 2010 → 2013 だけみても、これだけの改変があります。
>
>
>
> =================
> 2010 → 2013 における Excel.Application オブジェクトの仕様変更
> -----------------
> 下記のメンバーに不可視属性が付与されました
>  ・DispId(&H49c) : EnableAnimations プロパティ
>  ・DispId(&H0d4) : SaveWorkspace メソッド
>  ・DispId(&H70f) : ShowWindowsInTaskbar プロパティ
>  ・DispId(&Hae2) : SaveISO8601Dates プロパティ
> 下記のメンバーが追加されました
>  ・DispId(&Hbb2) : ShowQuickAnalysis プロパティ
>  ・DispId(&Hbb3) : QuickAnalysis プロパティ
>  ・DispId(&Hbb4) : FlashFill プロパティ
>  ・DispId(&Hbb5) : EnableMacroAnimations プロパティ
>  ・DispId(&Hbb6) : ChartDataPointTrack プロパティ
>  ・DispId(&Hbb7) : FlashFillMode プロパティ
>  ・DispId(&Hbb8) : MergeInstances プロパティ
>  ・DispId(&Hc56) : EnableCheckFileExtensions プロパティ
>
>
> =================
> 2007 → 2010 における Excel.Application オブジェクトの仕様変更
> -----------------
> 下記のメンバーに不可視属性が付与されました
>  ・DispId(&H59e) : Assistant プロパティ
> 下記のメンバーのシグネチャが変更されました
>  ・MacroOptions メソッド
>   ・2007 の場合
>    ・引数10個なメソッドとして実装されています
>    ・引数10個版の DispId は &Hf46f、メソッド名は "MacroOptions" です
>   ・2010 の場合
>    ・引数11個版が追加され、引数10個版には不可視属性が付与されました
>    ・引数10個版の DispId は &H46f、COM でのメソッド名は "_MacroOptions"、PIA では "MacroOptions" です
>    ・引数11個版の DispId は &Had2、COM でのメソッド名は "MacroOptions"、PIA では "MacroOptions2" です
> 下記のメンバーが追加されました
>  ・DispId(&Had0) : FileExportConverters プロパティ
>  ・DispId(&Had4) : SmartArtLayouts プロパティ
>  ・DispId(&Had5) : SmartArtQuickStyles プロパティ
>  ・DispId(&Had6) : SmartArtColors プロパティ
>  ・DispId(&Had7) : AddIns2 プロパティ
>  ・DispId(&Had8) : PrintCommunication プロパティ
>  ・DispId(&Had2) : MacroOptions メソッド(※上記シグネチャ変更を参照)
>  ・DispId(&Hada) : UseClusterConnector プロパティ
>  ・DispId(&Hadb) : ClusterConnector プロパティ
>  ・DispId(&Hadc) : Quitting プロパティ
>  ・DispId(&Hadd) : Dummy22 プロパティ
>  ・DispId(&Hade) : Dummy23 プロパティ
>  ・DispId(&Hadf) : ProtectedViewWindows プロパティ
>  ・DispId(&Hae0) : ActiveProtectedViewWindow プロパティ
>  ・DispId(&Hae1) : IsSandboxed プロパティ
>  ・DispId(&Hae2) : SaveISO8601Dates プロパティ
>  ・DispId(&Hae3) : HinstancePtr プロパティ
>  ・DispId(&Hae4) : FileValidation プロパティ
>  ・DispId(&Hae5) : FileValidationPivot プロパティ
> 状況依存ヘルプのコンテキストIDが前面的に刷新されました
引用返信 編集キー/
■81951 / inTopicNo.9)  Re[8]: エクセル帳票のエラー
□投稿者/ 遠藤 (7回)-(2016/11/24(Thu) 21:49:02)
魔界の仮面弁士様へ

経過報告を致します。

「最新版の修復セットアップ」をしたところ、エラーメッセージが変わりました。


「呼び出し先が呼び出しを拒否しました。」というエラーになりました。
過去の掲示板検索でも同様のエラーメッセージでのやり取りがありましたので、そちらも参照させていただきます。

お客様も、オフィスを2回インストールしたと言ってきており、そちら関係のものだと踏んでいます。
また、別PCで試しに動作させた件も、同様jにオフィスを2回インストールしたようで・・・。

現在、さらにもう1台別のPCでテスト依頼を進めております。
それで動作したらオフィスのクリーンインストールで進めようと考えています。

また、ご報告致します。


−−−−−






No81909 (遠藤 さん) に返信
> 魔界の仮面弁士様へ
>
> いつも詳しい回答をこんなに早くいただき、どうもありがとうございます。
>
>>Excel 2013 環境でコンパイルして、Excel 2013 環境で実行 → OK
>>Excel 2013 環境でコンパイルして、Excel 2016 環境で実行 → 基本的には動くはず
>>Excel 2016 環境でコンパイルして、Excel 2013 環境で実行 → 動くかも知れませんがあまりお奨めしません
>>Excel 2016 環境でコンパイルして、Excel 2016 環境で実行 → OK
>>
>>
>>どうしても、COM インターフェイスのバージョン依存性をクリアできない場合は、
>>参照設定を用いず、Dim xlApp As Object = CreateObject("Excel.Application")
>>などとして、いわゆる「レイトバインド」で呼び出す手法もあります。
>>デメリットも多いので、手放しでお奨めはできませんけれども。
>
> こちらは最終手段にとっておきます。
> お恥ずかしながら、レイトバウンドという方法をまだ理解しておりません。
>
>
>
>>また、.NET Framework 4 以降の場合には、コンパイル時に
>>「相互運用型の埋め込み」が True / False のいずれになっているかも
>>確認しておいてください。
>
> 確認しておきます。
>
>
>
> >>ただし、Office2003のパワーポイントがインストールされていましたのでアンインストールしてみましたが、現象は改善されませんでした。
>>
>>たまたま旧バージョンが混在している端末があったというだけで、
>>すべての PC がそうだというわけでは無いのですよね?
>
> そうですね。少なくとも当該PCはそうだった、というだけで、2台目のPCはそのような環境は未確認です。
> (詳細把握しておらず、すみません。お客様側にあるPCで直接確認できない点がございます)
>
>
>
>>異なるバージョンの共存は推奨されていせんが、どうしても Office の複数バージョンを
>>インストールしたいのであれば、「リリースされた順」に導入する必要があります。
>>https://support.office.com/ja-JP/article/6ebb44ce-18a3-43f9-a187-b78c513788bf
>>
>>もし、後から古いバージョンを導入してしまっていた場合、古いバージョンの
>>アンインストールと、最新版の修復セットアップを実施することで
>>復元されるケースもありますが、確実ではありません。たとえアンインストールを
>>実施したとしても、依存ファイルのバージョンやレジストリの不整合が残ってしまう
>>可能性を捨て切ることができず、修復箇所の調査が困難になりがちです。
>>
>>バージョン混在環境において、修復セットアップでも改善しないようであれば、
>>手間なようであっても、OS ごと初期化して最初からインストールし直すことを
>>お奨めしています。その方が結果的に原因の切り分けが早く済むことが多いので…。
>>
>>クリーンインストールで解決するならそれで良いわけですし、仮に
>>クリーンインストールしても問題が継続していたとしても、それならそれで
>>バージョン依存の問題では無いということが明確になりますからね。
>
> 最終的にクリーンインストールもしてもらえるように進めてみます。
> まずは「最新版の修復セットアップ」をしてみます。
>
>
>
>>一応、参考資料としてこんなものも。
>>http://yutakyunmnote.blogspot.jp/2012/09/cexcelwordcominvaildcastexception.html
>>http://stackoverflow.com/questions/28066719/unable-to-cast-com-object-of-type-microsoft-office-interop-excel-applicationcla
>
> 上のページのエラーメッセージがワードのことですが酷似しています。
> エクセル関連のレジストリ「HKEY_CLASSES_ROOT\TypeLib\{00020813-0000-0000-C000-000000000046}」の調査は「1.8 → Excel 2013(15.0)」でした。
> エクセル2016環境でコンパイルしたプログラムは私の自宅にあるエクセル2013環境でも動作しました。
>
> レジストリの画面コピーを送ってもらい確認しましたが、オフィス2003のレジストリが残っている状態には見えませんでした。
> レジストリからは消えているかもしれませんので、繰り返しになりますが「「最新版の修復セットアップ」をしてもらいます。
>
>
>
> >>ネットワーク関連の設定がこの問題に影響することなどはありますでしょうか?
>>可能性としては低い気がします。とはいえ、無いと言いきるだけの根拠もありません。
>>
>>既存環境をクリーンインストールしなおすことが困難で、かつ、
>>もしも本当に、拠点Aと拠点Bの違いがネットワークだけの問題であるのなら、
>>同等の環境を仮想化環境上で再構築し、追調査してみては如何でしょうか。
>
> そうですよね。エクセルなので、ネットワークやウイルス対策系ではなさそうですよね。
> 拠点で共通の動きなので、F/Wなども考えたのですが、エクセルだから違うかなと私も思いました。
> オフィス単独で起動はするので、MSの認証系に絡む問題でもなさそうでした。
> 仮想環境化して調査できるか確認してみます。
> また、当該PCを他の場所に移動できるのであれば、どういう結果になるかも見てみます。
>
> 大変お手数をおかけしておりますが、上記の結果をまたご報告させていただきます。
>
> 下に記載いただいな内容も勉強になります。ありがとうございます。
> 技術者として、魔界の仮面弁士様のスキルと情報力の博識ぶりに、脱帽しています。
> こんなすごい方ってどのような仕事をさせているのかな、と気になっています(笑)
>
>
>
>
>>>> 「Microsoft.Office.Interop.Excel.ApplicationClass' の COM オブジェクトをインターフェイス型 'Microsoft.Office.Interop.Excel._Application' にキャストできません。」
>>
>>『Application オブジェクト』は、バージョンごとに差異があります。
>>変更されたメンバーや追加されたメンバーもありますので、バージョン混在で
>>正しく動作するように作りこむには、それなりの調査力と検証工数が必要です。
>>
>>当方は Excel 2016 を調達していないので、2013 との違いは把握していませんが、
>>たとえば 2007 → 2010 → 2013 だけみても、これだけの改変があります。
>>
>>
>>
>>=================
>>2010 → 2013 における Excel.Application オブジェクトの仕様変更
>>-----------------
>>下記のメンバーに不可視属性が付与されました
>> ・DispId(&H49c) : EnableAnimations プロパティ
>> ・DispId(&H0d4) : SaveWorkspace メソッド
>> ・DispId(&H70f) : ShowWindowsInTaskbar プロパティ
>> ・DispId(&Hae2) : SaveISO8601Dates プロパティ
>>下記のメンバーが追加されました
>> ・DispId(&Hbb2) : ShowQuickAnalysis プロパティ
>> ・DispId(&Hbb3) : QuickAnalysis プロパティ
>> ・DispId(&Hbb4) : FlashFill プロパティ
>> ・DispId(&Hbb5) : EnableMacroAnimations プロパティ
>> ・DispId(&Hbb6) : ChartDataPointTrack プロパティ
>> ・DispId(&Hbb7) : FlashFillMode プロパティ
>> ・DispId(&Hbb8) : MergeInstances プロパティ
>> ・DispId(&Hc56) : EnableCheckFileExtensions プロパティ
>>
>>
>>=================
>>2007 → 2010 における Excel.Application オブジェクトの仕様変更
>>-----------------
>>下記のメンバーに不可視属性が付与されました
>> ・DispId(&H59e) : Assistant プロパティ
>>下記のメンバーのシグネチャが変更されました
>> ・MacroOptions メソッド
>>  ・2007 の場合
>>   ・引数10個なメソッドとして実装されています
>>   ・引数10個版の DispId は &Hf46f、メソッド名は "MacroOptions" です
>>  ・2010 の場合
>>   ・引数11個版が追加され、引数10個版には不可視属性が付与されました
>>   ・引数10個版の DispId は &H46f、COM でのメソッド名は "_MacroOptions"、PIA では "MacroOptions" です
>>   ・引数11個版の DispId は &Had2、COM でのメソッド名は "MacroOptions"、PIA では "MacroOptions2" です
>>下記のメンバーが追加されました
>> ・DispId(&Had0) : FileExportConverters プロパティ
>> ・DispId(&Had4) : SmartArtLayouts プロパティ
>> ・DispId(&Had5) : SmartArtQuickStyles プロパティ
>> ・DispId(&Had6) : SmartArtColors プロパティ
>> ・DispId(&Had7) : AddIns2 プロパティ
>> ・DispId(&Had8) : PrintCommunication プロパティ
>> ・DispId(&Had2) : MacroOptions メソッド(※上記シグネチャ変更を参照)
>> ・DispId(&Hada) : UseClusterConnector プロパティ
>> ・DispId(&Hadb) : ClusterConnector プロパティ
>> ・DispId(&Hadc) : Quitting プロパティ
>> ・DispId(&Hadd) : Dummy22 プロパティ
>> ・DispId(&Hade) : Dummy23 プロパティ
>> ・DispId(&Hadf) : ProtectedViewWindows プロパティ
>> ・DispId(&Hae0) : ActiveProtectedViewWindow プロパティ
>> ・DispId(&Hae1) : IsSandboxed プロパティ
>> ・DispId(&Hae2) : SaveISO8601Dates プロパティ
>> ・DispId(&Hae3) : HinstancePtr プロパティ
>> ・DispId(&Hae4) : FileValidation プロパティ
>> ・DispId(&Hae5) : FileValidationPivot プロパティ
>>状況依存ヘルプのコンテキストIDが前面的に刷新されました
引用返信 編集キー/
■81960 / inTopicNo.10)  Re[9]: エクセル帳票のエラー
□投稿者/ hagecha (1回)-(2016/11/25(Fri) 10:33:36)
横からですいませんが、なんとなく気になったので。

某社製のコンポーネントを経由してExcelを使用した帳票出力を行った際に、
原因不明のエラーが発生する事象に遭遇したことがあります。

その時の発生条件は以下の通りで
 ・印刷を実行したPCは Windows10 Anniversary Update 適応後の環境
 ・印刷に使用するExcelファイルは、印刷設定でシートの縮小設定を行っていた
 ・Excelのバージョンには依存しない(2016/2013、32bit/64bitの何れでも発生)

回避方法は
 ・Windowsの「通常使うプリンタ」の設定を行う

というものでした。
(コンポーネントの製造元に確認したので、根本原因は不明です)

全く見当違いかもしれませんが参考までに。
引用返信 編集キー/
■81983 / inTopicNo.11)  Re[10]: エクセル帳票のエラー
□投稿者/ 遠藤 (9回)-(2016/11/27(Sun) 08:29:06)
魔界の仮面弁士様へ

お世話になっております。
当件ですが、オフィスのクリーンインストールをすることで問題解消されました。

経緯としては、お客様が、

@オフィス2010がプレインストール済
A当方のシステムをインストール → 当方システム正常動作
Bオフィス2003をインストール → 当方システムエクセル出力不可になる
Cオフィス2003をアンインストール&オフィスの修復 → エラーメッセージが変化
Dオフィス2010のクリーンインストール → 当方システム正常動作

となり、お客様にもほっとしていただけました。
お忙しい中、親身にご対応いただきどうもありがとうございました。


hagecha様へ
追加のアドバイスをありがとうございました。
今回は上記で解消しましたが、お忙しい中のアドバイス、大変ありがとうございました。
引用返信 編集キー/
■82012 / inTopicNo.12)  Re[11]: エクセル帳票のエラー
□投稿者/ 遠藤 (10回)-(2016/11/29(Tue) 23:09:02)
解決済のチェックのための投稿です。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -