Я пытаюсь выбрать «используемый диапазон». Я получаю UsedRange на рабочем листе, а затем вызываю функцию Select для него. Я получаю HRESULT 0x800a03ec по вызову выбора.
Вот код:
COleVariant результат;
HRESULT hr = AutoWrap (DISPATCH_METHOD, & result, irange, L "Select", 0);
Я не буду публиковать код для функции AutoWrap (если кто-то не спросит). Это довольно хорошо известно, и я не изменил его.
Я почти уверен, что irange хорош, потому что я попробовал несколько звонков, чтобы убедиться, что она соответствует ожиданиям, и это так. Если я перебираю это, я могу видеть содержимое каждой ячейки (и это правильно); число возвращаемых строк и столбцов является правильным, а возвращаемое свойство «Адрес» проверено.
Рабочий лист не заблокирован.
Я видел другие проблемы, связанные с Locale, и моя система настроена на английский язык США, как и моя учетная запись пользователя. Ни один не был изменен.
Надеюсь, кто-то может помочь!
Обновление : Я также пытался
hr = iRange->Select(vResult);
Это возвращает S_OK, но не выбирает диапазон. Обычно я не могу напрямую вызывать функции в структуре iRange; результат - нарушение gpf или доступа - поэтому я должен использовать функцию autowrap (для запуска вызова Invoke). Я не удивлен, что этот звонок не работает.
Я также попытался открыть файл excel в режиме без чтения, если меня заблокировали. Это не решило проблему. Я могу выбрать отдельные ячейки, получив один элемент (ячейку) из диапазона и вызвав его Select, но я не могу выбрать диапазон.