如何设置 Excel 范围 Ptr 的值 = C++值?目前我得到 HRESULT 0x80004005
How do I set an Excel RangePtr's Value = Value in C++? Currently I get HRESULT 0x80004005
我有一个 Excel RangePtr
对象,我正在尝试将其相应的单元格转换为值而不是公式。我习惯于在 VBA 中执行此操作,您只需使用 r.Value = r.Value
即可执行此操作。在C++中 ,我尝试了一种类似的方法:
rng->Value = rng->Value;
但是当我运行它时,我从 HRESULT 0x8004005
中得到一个异常。单元格值中没有任何内容会导致 Excel 阻塞;返回的值应该只是一个包含double
值SAFEARRAY
的_variant_t
。那我做错了什么呢?
D'oh.看起来RangePtr.Value
实际上必须指定一个 XlRangeValueDataType
常量,这在 VBA 中不存在:
rng->Value[Excel::XlRangeValueDataType::xlRangeValueDefault] = rng->Value;
或者我可以使用 Value2
属性而不是普通Value
:
rng->Value2 = rng->Value2;
希望这对将来遇到此问题的其他人有所帮助。
经过痛苦的搜索,我得出了同样的结论,并使用value[Excel::XlRangeValueDataType::xlRangeValueDefault] 获取 c# 中的 range.value 或 C++/CLI 中的 vb 等效值。让我看看这是否有效...是的,这就是解决方案,它有效!
顺便说一句:如果你需要使用 范围::地址 属性,你可以使用样式地址[false, false, Excel::XlReferenceStyle::xlA1, Type::Missing, Type::Missing];当然,使用适当的参数。
此外,关于 value 属性,我发现单元格值的存在可以通过以下方式检查:Value[Excel::XlRangeValueDataType::xlRangeValueDefault] != nullptr
通常,"safe_cast<Excel::Range^>"和"safe_cast<Excel::Workbook^>"的类型转换也很有帮助。将 Excel 自动化与 C++/CLI 一起使用的整个主题记录很少。
- 我希望改进或要求我目前的延迟/睡眠方法。C++
- 我目前正在制作一个自动点击器,到目前为止,它已经取得了半成功。我需要帮助引入切换键
- 我正在制作一个二十一点程序。我目前有两个问题
- 如何使用 Open MPI 使我的程序更快?我的 Open MPI 程序目前比原来慢,我有什么不明白的?
- 使用C++查找到目前为止看到的数字的总和
- 目前是 V8 线程安全的
- 为什么到目前为止,C++中还没有明确包含整数到字符串的转换
- boost.asio和目前的网络TS之间最大的区别是什么
- 我目前正在使用C++生成器 6 XE4 来开发财务图表.移动到图表画布上的某个位置时出现异常
- 为什么复合文字到目前为止不是C++的一部分
- 从字符串中检测数字而不是字母的方法.(目前使用istringstream)
- 我目前使用的是什么 C++ 规范?
- 到目前为止,我可以对Visual Studio 2015中的C++模块做些什么?(使用实验开关)
- 目前可用的std::dyarray的任何替代方案
- 有一个指向std::vector-element的指针,该指针目前还不存在,但稍后将被构造,这是个好主意吗?
- VS2008调试WEC7应用程序-断点目前不会被击中.此函数当前没有加载可执行代码
- 目前有什么C/ c++库充满了众所周知的压缩算法吗?
- 如果我将一个值赋给一个目前不使用的字符串位置,究竟会发生什么?
- 目前在跨平台C和c++ api中使用字符串的最佳实践是什么?
- 如何缩短我的输出?目前正在'inf'