VC++6.0,WindowsXPにて開発してます。
VC++からExcelを操作するプログラムを作ろうとしているのですが、
実行ファイルをインストールするPCの環境が
「Excel2002」、「Excel2000」 のどちらであっても
動くような実行ファイルは作れるのでしょうか?
サンプルを探したのですが、参考になるものを見つけることが
できませんでした。よろしくお願いします。
VBだったら、CreateObject(バインディング)を使えば簡単に実現できるんですけど、
VCの場合、どうしてもタイプライブラリをインポート(VBでいう参照設定)してしまう
ので難しそうですね。
前述のとおりインポートする方法はダメそうなので、
CLSIDFromProgID、CoCreateInstanceあたりを使って一つ一つプロパティからメソッドを割り当てていくしかないかも。(カナリ面倒)
Visual C++ を使用した Office オートメーション
http://support.microsoft.com/kb/196776/JA/
の
3. オートメーションを使用する方法にはどのようなものがありますか。
の
3つめの方法の
http://support.microsoft.com/kb/181473/
C++用のがありました。
MFC または #import を使用せずに C++ から Excel を自動化する方法
http://support.microsoft.com/?scid=kb;ja;216686&spid=2512&sid=97
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
> 下記はヘッダーファイルの抜粋なのですが、この場合、常にimportされ
> includeされることはないということなのでしょうか?
そうです。
#if 1 はよく使う方法です。
たとえば、ちょっとしたテストを行いたい場合、コメントアウトという形をとらず、
#if 1〜#else〜#endif という形にしておく。
すると、何かあったときに、 #if 1 を #if 0 とすることですぐ元に戻せる。
あ〜!そういうことなんですか〜!!
いちいちコメントにするのは面倒ですものね。
Blueさん、どうもありがとうございました。
ツイート | ![]() |