Excel2002,Excel2000 どちらにも対応できる実行ファイルは作れますか?

解決


ゆみみ  2006-08-09 03:04:46  No: 62684

VC++6.0,WindowsXPにて開発してます。
VC++からExcelを操作するプログラムを作ろうとしているのですが、
実行ファイルをインストールするPCの環境が
「Excel2002」、「Excel2000」 のどちらであっても
動くような実行ファイルは作れるのでしょうか?
サンプルを探したのですが、参考になるものを見つけることが
できませんでした。よろしくお願いします。


Blue  2006-08-09 08:39:59  No: 62685

VBだったら、CreateObject(バインディング)を使えば簡単に実現できるんですけど、
VCの場合、どうしてもタイプライブラリをインポート(VBでいう参照設定)してしまう
ので難しそうですね。

前述のとおりインポートする方法はダメそうなので、
CLSIDFromProgID、CoCreateInstanceあたりを使って一つ一つプロパティからメソッドを割り当てていくしかないかも。(カナリ面倒)

Visual C++ を使用した Office オートメーション
http://support.microsoft.com/kb/196776/JA/

3. オートメーションを使用する方法にはどのようなものがありますか。 

3つめの方法の
http://support.microsoft.com/kb/181473/


Blue  2006-08-09 19:39:20  No: 62686

C++用のがありました。

MFC または #import を使用せずに C++ から Excel を自動化する方法
http://support.microsoft.com/?scid=kb;ja;216686&spid=2512&sid=97


ゆみみ  2006-08-09 23:22:18  No: 62687

Blueさん、ご返答ありがとうございます。
VBだと簡単なんですか。VBもよくわからないけどVC++なんて勉強し始めて
まだ一ヶ月位なので全然わからないんです。
実は他社作成プログラムの改修作業をしなくてはならず、その作業項目の
中に「Excel97,2000対応」から「Excel2000,2002対応」に変更する
というのがあります。そのプログラムでは#importを使っているので
同じ方法で実現させようと考えてました。
でも、#importでは難しいというお話ですし、現状のプログラムも両方に
対応していないような気がしてきました。
せっかくいろいろと教えて頂いたのですが力不足なので、
2000用2002用の2つの実行ファイルを作成して対応しようと思います。
ありがとうございました。

すみませんがもう一つ質問させて下さい。
下記はヘッダーファイルの抜粋なのですが、この場合、常にimportされ
includeされることはないということなのでしょうか?
#if 1  には決まりごとがあるのかと思い調べてみたのですが、
わかりませんでした。よろしくお願いします。

#if 1

   // --> Excel(タイプライブラリ)  を  import  する

#else 

   // --> Excel(*.tlh)  を  include  する

#endif


Blue  2006-08-09 23:28:24  No: 62688

> 下記はヘッダーファイルの抜粋なのですが、この場合、常にimportされ
> includeされることはないということなのでしょうか?
そうです。

#if 1 はよく使う方法です。
たとえば、ちょっとしたテストを行いたい場合、コメントアウトという形をとらず、
#if 1〜#else〜#endif という形にしておく。
すると、何かあったときに、 #if 1 を #if 0 とすることですぐ元に戻せる。


ゆみみ  2006-08-10 01:08:53  No: 62689

あ〜!そういうことなんですか〜!!
いちいちコメントにするのは面倒ですものね。
Blueさん、どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加