|
分類:[C#]
2006/10/03(Tue) 14:50:59 編集(投稿者)
> ただ一つ気になるのは、2003しか入っていない環境にも関わらずRangeのValueプロパティが使えたり
2003 であろうとなかろうと、Range オブジェクトは、Value プロパティを持っているのでは。 以下、Excel 8(Excel 97) と Excel 11(Excel 2003) のタイプライブラリの比較。
[uuid(00020846-0000-0000-C000-000000000046)] dispinterface Range { (…略…) #if EXCEL8 [id(0x00000006), propget] VARIANT Value();
[id(0x00000006), propput] void Value([in] VARIANT rhs); #elseif EXCEL11 [id(0x00000006), propget] VARIANT Value([in, optional] VARIANT RangeValueDataType);
[id(0x00000006), propput] void Value([in, optional] VARIANT RangeValueDataType, [in] VARIANT rhs); #endif (…略…) };
[uuid(00020846-0001-0000-C000-000000000046)] interface IRange : IDispatch { (…略…) #if EXCEL8 [propget] HRESULT _stdcall Value([in, lcid] long lcid, [out, retval] VARIANT* RHS);
[propput] HRESULT _stdcall Value([in, lcid] long lcid, [in] VARIANT RHS); #elseif EXCEL11 [propget] HRESULT _stdcall Value([in, optional] VARIANT RangeValueDataType, [in, lcid] long lcid, [out, retval] VARIANT* RHS); [propput] HRESULT _stdcall Value([in, optional] VARIANT RangeValueDataType, [in, lcid] long lcid, [in] VARIANT RHS); #endif (…略…) };
> WorkBookのOpenメソッドの引数がファイルパスのみだったりと、 Workbook.Open というメソッドは、定義されていないと思います。(Open イベントの事では無いですよね?)
Workbooks.Opens というメソッドならば定義されていますけれども、それにしても 「引数がファイルパスのみ」という定義では無く、『[in, optional] VARIANT ReadOnly』などの 省略可能な引数が十数個ほど用意されているはずです。
------------
<Excel97> [id(0x000002aa)] HRESULT Open([in] BSTR Filename, /* 12個のoptional引数 */, [in, lcid] long lcid, [out, retval] Workbook** RHS); </Excel97>
<Excel2003> [id(0x000002aa)] HRESULT _Open([in] BSTR Filename, /* 12個のoptional引数 */, [in, lcid] long lcid, [out, retval] Workbook** RHS);
[id(0x00000783)] HRESULT Open([in] BSTR Filename, /* 14個のoptional引数 */, [in, lcid] long lcid, [out, retval] Workbook** RHS); </Excel2003>
|