如何在自定义 OLE 对象中实现类似 Excel 的 OLE 链接行为

发布于 2024-10-28 04:05:38 字数 306 浏览 3 评论 0原文

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

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

In Word, you can link to specific cells in an Excel spreadsheet - which can itself exist as a separate file, or as an embedded object in the word doc.
You can then create links to specific cells in that spreadsheet, usually by copying the cells from the in-place activated spreadsheet, and using Paste Special to paste a link to the copied cells. The link uses excel's !Sheet1!R2C1 format in the link name to identify the cells (and you can edit this name to link to different cells).

How do I go about achieving the same effect for a custom OLE object (built using MFC OLE classes)?
Is it even possible, or does Word use built-in knowledge about Excel to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沉溺在你眼里的海 2024-11-04 04:05:38

简短的答案是项目名称。您需要实现 IOleItemContainer 来执行此操作。

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

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

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

The short answer is Item Moniker. You need to implement IOleItemContainer to do this.

When combined with a file moniker, an item moniker forms a complete path. Item monikers thus extend the notion of path names beyond the file system, defining path names to identify individual objects, not just files.

The long answer is no, Word does not make use of secret knowledge about Excel (or vice-versa), though I am sure it helps that OLE was built with embedding Excel into Word as a major use-case.

You can also embed an Excel Range in Internet Explorer, or pretty much anything that supports embedding. And you can access a range object and alter its properties from VBScript, by using Set oRange = GetObject("c:\path\to\spreadsheet.xls!Sheet1!R2C1") or similar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文