excel - 在 Excel 范围 (IRange) 上调用 Select 时出现 0x800a03ec。范围是从工作表的 usedrange 返回的

标签 excel automation ole dsoframer

我正在尝试选择“使用范围”。我得到了工作表的 UsedRange,然后在其上调用 Select 函数。我在选择调用中收到 HRESULT 0x800a03ec。

这是代码:

COleVariant 结果;

HRESULT hr = AutoWrap(DISPATCH_METHOD, &result, irange, L"Select", 0);

我不会费心发布 AutoWrap 功能的代码(除非有人问)。它非常有名,我没有修改它。

我很确定 irange 很好,因为我尝试了一些调用来验证它是否符合我的期望,并且确实如此。如果我遍历它,我可以看到每个单元格的内容(并且是正确的);返回的行数和列数是正确的,并且返回的“地址”属性 checkout 。

工作表未锁定。

我已经看到其他与区域设置有关的问题,并且我的系统设置为美国英语,我的用户帐户也是如此。两者都没有改变。

希望有人能帮忙!

更新 : 我也试过

hr = iRange->Select(vResult);

这确实返回 S_OK,但它不选择范围。通常,我不能直接调用 iRange 结构中的函数;结果是 gpf 或访问冲突——所以我必须使用 autowrap 函数(来驱动 Invoke 调用)。我对这个电话不起作用并不感到惊讶。

我还尝试以非只读模式打开 excel 文件,以防我被锁定。这并没有解决问题。我可以通过从范围中获取单个项目(单元格)并调用其 Select 来选择单个单元格,但我无法选择范围。

最佳答案

我找到了这个问题的答案。仅当在 DSOFRAME 示例 (Microsoft KB 311765) 中使用时才会出现问题。 DSOFramer 是用于嵌入 MS Office 文档的通用 ActiveX 控件。该问题也仅发生在调试版本中;发布版本很好。

我还发现了一种适用于发布或调试版本的解决方法:获取范围内的任何单元格(使用 get_Item),然后对该项目调用 select,然后再次选择以取消选择它。完成后,可以在范围上调用选择。显然,如果已经选择了一个单元格(或者如果选择状态未定义),则无法在范围上调用 select。

关于excel - 在 Excel 范围 (IRange) 上调用 Select 时出现 0x800a03ec。范围是从工作表的 usedrange 返回的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/272847/

相关文章:

javascript - 如何使用 javascript 和 Protractor 访问 "hidden"样式属性

c++ - 在 native 应用程序中打开分离的 OLE 二进制文件

Excel VBA - 保存前禁用表单

excel - 将工作表的动态范围导出到单个 PDF 文档

vba - 当单元格值按公式更改时运行 VBA 脚本

powershell - 自动化帐户链接到工作区 Azure

c# - 如何在命令运行时从 C# 中的 powershell 获取输出?

c# - 从 MS Access OLE 对象列创建图像文件(使用 C# 或 VB.NET)

c++ - 0x800a1421 HRESULT 是什么意思?

Python 合并 .xls 文件