VC++6.0、Windows2000環境でDLLを作成して、そのDLLの中からExcelを操作したいのですが、Excelがうまく開けません。
exe内でExcelを操作することは出来たのですが、同じことをDLL内に書いてもうまくいきません。もう2日これで悩んでいます。
どなたか助けてください。 以下、ソースを書いておきます。
//宣言
#import "C:\Program Files\Microsoft Office\Office\Mso9.dll" no_namespace rename("DocumentProperties", "DocumentPropertiesXL")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb" no_namespace
#import "C:\Program Files\Microsoft Office\Office\excel9.olb" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces
using namespace Excel;
_ApplicationPtr pExcel;
//関数内
pExcel.CreateInstance(L"Excel.Application"); ←ここでクリエイトできていない様子
よろしくおねがいします(_ _(--;(_ _(--;
エラーコードは何ですか?
単にCOMを初期化してないなんてことはないですよね。
レスありがとうございます
エラーは出ていないのですが
pExcel.CreateInstance(L"Excel.Application");
↑この行が実行されてもpExcelのアドレスがNULLなのです。
exe上で実行するとpExcelに正常にアドレスがとれます。
pExcelがNULLなので、当然のことながら その後の命令・・・
pExcel->Visible = true;
↑これで落ちてしまいます。
exe上で実行しているときもそうですが、comの初期化というのは
特に意識していません。これは単に当方の知識不足というのもあるのですが
初期化というのがいまいちよく分かっていないようです^^;
exeとdllで扱いが違うのでしょうか?
なにか解決のヒントになるかもしれないので少しご教授願えないでしょうか?
調べてみたのですがdllでのcomについて書かれているののが見つけられなくて…
都合のいいことばかり書いて申し訳ありませんがよろしくお願いします。
度々すいません
エラーコードということでしたのでGetLastError()を試してみたところ
エラーコードは2でした。"指定されたファイルが見つかりません"らしいです
ファイル……ますます混乱してきました
なんのファイルなんでしょう?
よろしくお願い致します。 o(TдT)o
解決しました・・・お騒がせしましたヾ(^-^;)
CoInitialize(0);
↑これを追加したらうまくいきました。
exeでは特に何もしなくても動いたのでぜんぜん意識していませんでした。
くだらないことでスレ作ってしまってごめんなさいです。
ありがとうございました!!
ツイート | ![]() |