【问题标题】:How to achieve Excel-like OLE link behaviour in a custom OLE object如何在自定义 OLE 对象中实现类似 Excel 的 OLE 链接行为
【发布时间】:2011-03-28 21:16:47
【问题描述】:

在 Word 中,您可以链接到 Excel 电子表格中的特定单元格 - 它本身可以作为单独的文件存在,也可以作为 word doc 中的嵌入对象存在。 然后,您可以创建指向该电子表格中特定单元格的链接,通常通过从就地激活的电子表格中复制单元格,并使用选择性粘贴将链接粘贴到复制的单元格。该链接在链接名称中使用 excel 的 !Sheet1!R2C1 格式来标识单元格(您可以编辑此名称以链接到不同的单元格)。

如何为自定义 OLE 对象(使用 MFC OLE 类构建)实现相同的效果?
是否有可能,或者 Word 是否使用有关 Excel 的内置知识来执行此操作?

【问题讨论】:

    标签: mfc ms-word ole


    【解决方案1】:

    简短的回答是Item Moniker。您需要实现 IOleItemContainer 来执行此操作。

    当与文件名字对象结合时,项目名字对象形成一个完整的路径。因此,项目名字对象将路径名的概念扩展到文件系统之外,定义路径名来标识单个对象,而不仅仅是文件。

    长答案是否定的,Word 不使用有关 Excel 的秘密知识(反之亦然),尽管我确信 OLE 是通过将 Excel 嵌入 Word 作为主要用例来构建的。

    您还可以在 Internet Explorer 中嵌入 Excel 范围,或者几乎任何支持嵌入的东西。您可以使用Set oRange = GetObject("c:\path\to\spreadsheet.xls!Sheet1!R2C1") 或类似方法从VBScript 访问范围对象并更改其属性。

    【讨论】:

    • 好的,所以在创建了 Item Moniker 之后,您如何“分发”它,正如 CreateItemMoniker 的文档所说的那样?你在ROT中注册了吗?
    • 嗨,没有 ROT 是针对主要对象的,而不是其中的项目。对于 OLE 链接行为,您需要提供 CF_LINKSOURCE。通常它通过特殊粘贴从剪贴板到达目的地。
    • 探索 MSDN 的良好起点在这里:msdn.microsoft.com/en-us/library/838a3whf(VS.80).aspx
    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多