こんにちわ。
エクセルファイルの情報を読み込み、それをSQLサーバに登録したいのですが
#importライブラリの所でつまづいてしまいました。。
環境はVisalC.NET、Excel2003,SQLServer2000,SDK開発です。
●SQL用のADOインポートライブラリは以下のようにします
#import C:\Program Files\Common Files\System\ADO\msado15.dll no_namespace
rename(EOF, EndOfFile)
●Excel用のインポートライブラリは以下のようにしてます。
#import C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL
no_namespace rename(DocumentProperties, DocumentPropertiesXL) rename
(RGB, MSO_RBGXL)
#import C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb
no_namespace
#import C:\Program Files\Microsoft Office\Office11\EXCEL.EXE rename
(ReplaceText, ReplaceTextXL) rename(CopyFile, CopyFileXL) rename
(DialogBox, DialogBoxXL) rename(RGB, RBGXL) rename
(DocumentProperties, DocumentPropertiesXL) exclude(IFont) exclude
(IPicture) no_dual_interfaces
それぞれを使う場合は問題が無いようですが、両方をインポートすると
Property' の宣言を確認してください。とういようなエラーが沢山出るようになって
しまいます。
同時に2種類のインポートは無理なのでしょうか?
エラーの内容を良く見てると
\vbe6ext.tlh(97) : error C3121: クラス 'Property' に対する GUID は変更できませ
ん。
\debug\msado15.tlh(929) : 'Property' の宣言を確認してください。
というものがあります。
それと同時に
\debug\vbe6ext.tli(1100) : error C3861: 'putref_Object': 識別子は、引数依存の照
合を使用しても見つかりません。
というエラーが出ていました。
msado15.tlhの宣言とvbe6ext.tliの宣言が同じような宣言になり重複してるといいう事な
のかと思い、ADOのno_namespaceの文を削除してみてコンパイルしてみるとエラーは出な
くなりました。
COMの#immportの事について記述してある文献を探してる所なので、
動作確認はまだしていませんが、この処理ってどうなんでしょうか?
自己レスが続きます。すみません。
ADOの#import内のno namespaceの記述を外すとエラーが出てしまいます。
そこで、namespaceが違うからだと思い、ADOの#import文の下の行に
using namsespace ADODB
と記述するとADODBだけならそれで動作するのですが、
エクセルの#import文が入るをまたエラーが出ます。
#import の記述の方法が悪いのは分かっているのですが、対応が分かりません。
何かヒントはありませんでしょうか?
COMについて文献を勉強中です。
解決はしていませんが、色々と分かってきました。
ひとまず質問は終わりとさせて頂きます。
ありがとうございました。