DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ExcelをCreateObjectする際のエラーについて

環境/言語:[vb.net]
分類:[.NET]

いつもお世話になっております。

Window2000英語版
Office2000日本語版

上記の環境で、
XlsApp = CreateObject("Excel.Application")
を行うと、
「cannot create activex component」
といったエラーが出てしまいます。

現在調査していますが、MSの不具合で対処できないものなのか、対処可能なのかもわからない状況です。

対処方法等、ご存知の方がいましたらご教授願います。
■No23298に返信(一休さんの記事)
> XlsApp = CreateObject("Excel.Application")
> を行うと、
> 「cannot create activex component」
> といったエラーが出てしまいます。
>

実は、裏でエクセルが動作してしまってるとか?
エクセルが動作している場合、ActiveXコンポーネントは
オブジェクトを作成することができません、
その場合は、GetObjectを使います。
http://penhagi.com/access/ota2002/7165.htm
■No23300に返信(やじゅさんの記事)
> ■No23298に返信(一休さんの記事)
>>XlsApp = CreateObject("Excel.Application")
>>を行うと、
>>「cannot create activex component」
>>といったエラーが出てしまいます。
>>
>
> 実は、裏でエクセルが動作してしまってるとか?
> エクセルが動作している場合、ActiveXコンポーネントは
> オブジェクトを作成することができません、
> その場合は、GetObjectを使います。
> http://penhagi.com/access/ota2002/7165.htm

やじゅ様、ご回答ありがとうございます。

エクセルは動作しておりません。
また、日本語OS+office2000日本語版環境では、
エクセルが動作している場合(ファイルを開いている状態)でもエラーとなりません。

また、「cannot create activex component」エラーが出たあと、
エクセルの新規作成、及びファイルを開く等の操作がまったくできなくなりました。
エクセルを再インストールしても直りません。
(レジストリの何かが変わってしまった??)

既存ファイルを開こうとすると
「cannot find the file ・・・」
というファイルが見つからないエラーとなります(window2000英語OS)

よくわかっていないのですが、英語OSと日本語版Officeで文字コード?の違いにより文字化けして、パスを解決できずに、ファイルを開くこともCreateObjectもできないんでしょうか??

MSに問い合わせたほうがよさそうですかね・・・
うろ覚えで申し訳ないのですが、

MSDNで「ロケールを合わせないとダメ」
のような記事を見たことがあるような気がするのですが、
調べてみてはいかがでしょうか?
■No23298に返信(一休さんの記事)
> Window2000英語版
> Office2000日本語版

Window2000 ではなく、
Windows 2000 ですよね。s が抜けていますよ。<No23307 でも


> 上記の環境で、
> XlsApp = CreateObject("Excel.Application")
> を行うと、
> 「cannot create activex component」
> といったエラーが出てしまいます。

英語版 OS + 日本語 Office な環境を作った事が無いので、確かな事は
答えられませんが、それは他の環境でもエラーになるのでしょうか?

というのも、10日ほど前に一休さんが No23269 で質問されていた時には

》 「ライブラリの形式が古いか、または種類が無効です」
》 といったエラーが発生します。
》 参照:http://support.microsoft.com/kb/320369/ja

》 上記サイトに回避方法が載っておりそれを使用するつもりです。
(中略)
》 CultureInfoを設定するためにExcelの言語バージョンを最初に取得したいのですが、
》 1:XlsApp = CreateObject("Excel.Application")
》 2:Dim Country_Code As Integer = XlsApp.International(1)

》 上記のExcel言語取得方法を使用すると
》 2行目で
》 「ライブラリの形式が古いか、または種類が無効です」
》 エラーとなってしまいます。

と書かれていましたよね。(1 行目は実行できて、2行目でエラーになる)
その時の環境と今の環境は、別の物なのでしょうか?
■No23320に返信(魔界の仮面弁士さんの記事)
> ■No23298に返信(一休さんの記事)
>>Window2000英語版
>>Office2000日本語版
>
> Window2000 ではなく、
> Windows 2000 ですよね。s が抜けていますよ。<No23307 でも
>
>
>>上記の環境で、
>>XlsApp = CreateObject("Excel.Application")
>>を行うと、
>>「cannot create activex component」
>>といったエラーが出てしまいます。
>
> 英語版 OS + 日本語 Office な環境を作った事が無いので、確かな事は
> 答えられませんが、それは他の環境でもエラーになるのでしょうか?
>
> というのも、10日ほど前に一休さんが No23269 で質問されていた時には
>
> 》 「ライブラリの形式が古いか、または種類が無効です」
> 》 といったエラーが発生します。
> 》 参照:http://support.microsoft.com/kb/320369/ja
> 》
> 》 上記サイトに回避方法が載っておりそれを使用するつもりです。
> (中略)
> 》 CultureInfoを設定するためにExcelの言語バージョンを最初に取得したいのですが、
> 》 1:XlsApp = CreateObject("Excel.Application")
> 》 2:Dim Country_Code As Integer = XlsApp.International(1)
> 》
> 》 上記のExcel言語取得方法を使用すると
> 》 2行目で
> 》 「ライブラリの形式が古いか、または種類が無効です」
> 》 エラーとなってしまいます。
>
> と書かれていましたよね。(1 行目は実行できて、2行目でエラーになる)
> その時の環境と今の環境は、別の物なのでしょうか?

ちんとんしゃん様
魔界の仮面弁士様

ご回答ありがとう御座います。

10日ほど前に質問したNo23269は、
Excelのデフォルト言語設定を取得したかったのですが、
無理だと勝手に思って削除しました^^;

削除した質問と関連しているのですが、
地域オプションの言語が英語でない場合に英語版Excelをオートメーションで起動すると、
「ライブラリの形式が古いか、または種類が無効です」エラーとなります。
http://support.microsoft.com/kb/320369/ja

回避方法として
CultureInfo を 一時的に "en-US"に変更します

Try

Dim oldCI As System.Globalization.CultureInfo = _
System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = _
New System.Globalization.CultureInfo("en-US")

'Excel処理




Catch ex As Exception

Finally

System.Threading.Thread.CurrentThread.CurrentCulture =oldCI

End Try

日本語OS+日本語Office等環境で、
CultureInfo を "en-US" に変えた時になにか影響がでないか心配だったので、
Excelのデフォルト言語設定を取得し、処理分岐しようと思い質問させていただきました。No23269

CultureInfo を "en-US" に変えた時になにか影響が調べるために、
上記コードを実装した上で、

Windows XP 英語版,日本語版
Windows 2000 英語版,日本語版

×

Office2000 英語版,日本語版
Office2002 英語版,日本語版
Office2003 英語版,日本語版

の組み合わせで調べていたところ、
windows英語版 × Office2000 日本語版

のみ
XlsApp = CreateObject("Excel.Application")で
「cannot create activex component」エラーが発生して、
Excelが使用できない状態となっておりました。
(ちなみに地域オプションの言語をJapaneseにすると動きました)

そこで、OSを再インストールし、Officeを入れなおしたら、
「cannot create activex component」エラーは発生しなくなりました。

原因は、不明です。
Officeのいろんなバージョンを消したり入れたりしていたからでしょうか?

一応、プログラミングの問題ではなく、環境の問題ということで
解決させていただこうと思います。

ありがとうございました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板