範囲内の単一のアイテムを選択できるコードがあります。
COleVariant vItems = cstrAddr;
hr = AutoWrap(
DISPATCH_PROPERTYGET,
&vCell,
irange,
L"Item",
2,
COleVariant((short)(1)),
COleVariant((short)(1)));
if (FAILED(hr)) return hr;
// Use the dispatch interface to select the cell
COleVariant result;
hr = AutoWrap(
DISPATCH_METHOD,
&result,
vCell.pdispVal,
L"Select",
0);
if (FAILED(hr)) return hr;
これはうまくいきます。ただし、範囲内のすべてのセルを選択する必要がありますが、Item プロパティの "get" 呼び出しでこれを指定する方法を見つけることができませんでした。-1、-1 を使用してみました... コロンで区切られた列の範囲と行の範囲を指定して、2 つのバリアントで bstr のペアを渡そうとしました。また、範囲指定の文字列の単一パラメーターを渡そうとしました。どれも機能しませんでした。
更新:私も試しました
hr = iRange->Select(vResult);
これは S_OK を返しますが、範囲は選択しません。通常、iRange 構造体の関数を直接呼び出すことはできません。結果は gpf またはアクセス違反です。そのため、autowrap 関数を使用する必要があります (Invoke 呼び出しを実行するため)。この呼び出しが機能しないことに驚きはありません。これが機能することを願っています....これは、このプロジェクトの最後の部分です。