VC++でExcelCOM(2000)を使用したアプリケーションをExcel2003に対応しようとしたところ、mso9.dllが2003にないため、エラーとなりました。

使用している箇所は、

#import ”c:¥Program Files¥Microsoft Office¥Office¥mso9.dll” no_dual_interfaces

です。
http://www.microsoft.com/japan/msdn/howto/howtoOffice.asp
を調べてみるとExcel2003では、mso9.dllの代わりにexcel.exeとなっていて意味が分からない状態です。
解決する方法を教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:nitscape No.1

回答回数526ベストアンサー獲得回数0

ポイント40pt

#import ”c:¥Program Files¥Microsoft Office¥Office¥excel.exe” no_dual_interfaces

のようにしても動くと思いますが。。。

ファイル指定ですと環境によってエラーになることがありますから私の場合はインターフェース名を指定する方法を使っています。


#import ”progid:○○○” no_namespace, named_guids


というような形にするのがいいです。○の部分は使うCOMに合わせます。Excelの場合は「Excel.Application.9」などになります(Excel内のどの機能を利用するかによって変わります)。

id:EguTaka

ご返答ありがとうございます。

早速試してみたのですが、

①#import ”c:¥Program Files¥Microsoft Office¥Office¥excel.exe” no_dual_interfacesのようにしても動くと思いますが。。。

excel.tlh(自動生成されるファイル?)で大量のエラーが発生しました。

エラー内容は主に、

・型が指定されていない。

・シンタックスエラー

です。何か間違っていたのでしょうか?

②ファイル指定ですと環境によってエラーになることがありますから私の場合はインターフェース名を指定する方法を使っています。

私が作成したプログラムではなく、改変要求のプログラムなので、全てのインターフェイスを特定するのは、ちょっと困難なのでパスしました。

以上、よろしくお願い致します。

2005/09/29 21:26:36

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません