我正在尝试选择“使用范围”。我得到了工作表的 UsedRange,然后在其上调用 Select 函数。我在选择调用中收到 HRESULT 0x800a03ec。
这是代码:
COleVariant 结果;
HRESULT hr = AutoWrap(DISPATCH_METHOD, &result, irange, L"Select", 0);
我不会费心发布 AutoWrap 功能的代码(除非有人问)。它非常有名,我没有修改它。
我很确定 irange 很好,因为我尝试了一些调用来验证它是否符合我的期望,并且确实如此。如果我遍历它,我可以看到每个单元格的内容(并且是正确的);返回的行数和列数是正确的,并且返回的“地址”属性签出。
工作表未锁定。
我已经看到发布与区域设置有关的其他问题,并且我的系统设置为美国英语,我的用户帐户也是如此。两者都没有改变。
希望有人能帮忙!
更新:我也试过
hr = iRange->Select(vResult);
这确实返回 S_OK,但它不选择范围。通常,我不能直接调用 iRange 结构中的函数;结果是 gpf 或访问冲突——所以我必须使用 autowrap 函数(来驱动 Invoke 调用)。我对这个电话不起作用并不感到惊讶。
我还尝试以非只读模式打开 excel 文件,以防我被锁定。这并没有解决问题。我可以通过从范围中获取单个项目(单元格)并调用其 Select 来选择单个单元格,但我无法选择范围。