У меня есть код, который позволяет мне выбрать один элемент в диапазоне:
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;
Это отлично работает. Однако мне нужно выбрать все ячейки в диапазоне, но я не смог найти способ указать это в вызове get для свойства Item. Попытался использовать -1, -1 ... попытался передать пару bstr в 2 вариантах, указав разделенный двоеточиями диапазон столбцов и диапазон строк; также попытался передать один параметр строки спецификации диапазона. Никто не работал.
Обновление : Я также пытался
hr = iRange->Select(vResult);
Это возвращает S_OK, но не выбирает диапазон. Обычно я не могу напрямую вызывать функции в структуре iRange; результат - нарушение gpf или доступа - поэтому я должен использовать функцию autowrap (для запуска вызова Invoke). Я не удивлен, что этот звонок не работает. Надеюсь, я смогу заставить это работать ... это последняя часть этого проекта.