gpt4 book ai didi

excel - 如何移植 OneNote 2010 vba 脚本(托管在 XLSM 文件中)以在 Onenote 2016 中工作

转载 作者:行者123 更新时间:2023-12-04 20:30:41 24 4
gpt4 key购买 nike

我需要帮助才能将我制作的 Excel VBA 主机工具包从 Onenote 2010 移植到 OneNote 2016

TLDR:

a) 如果我想使用 Excel 2016 VBA 主机自动化 OneNote 2016(桌面应用程序),我应该实际查看/引用哪些对象库?我似乎只能链接到 Onenote 12 对象库,有一个 V15 库,但即使我取消单击其余部分,当我尝试引用时也会产生“名称冲突”错误。我的安装错了吗? (Win10+Excel/ON 2016 32位)

b) 在 OneNote 2016 中,对 getpagecontent() 的 vba 调用应该如何,特别是架构参数是什么,一个字符串常量?我应该关心吗?

更长的版本

https://github.com/jceresearch/onenote_vba_host (public) ,我维护了一个 Excel 电子表格,其中包含一些脚本来执行诸如将批量页面导出为单独的 doc/pdf 之类的事情,包括旁边的嵌入文件。还可以对页面进行自动编号,并在页面中自动添加内容。它在功能区中添加了一个菜单,您可以在那里看到选项。

代码很乱,但可以很好地与 Onenote 2010 配合使用。我很快需要在 2016 年工作。

2016代码的关键部分在类代码中,调用OneNote:

Set app = New OneNote12.Application

在我的 2010 代码/安装中,它已经是 OneNote14.Application,但我拥有的 office 365 版本只允许我引用 Onenote12 对象库。

还有一个“Microsoft OneNote 15.0 类型”库,但是当我单击它时,即使我删除了旧库,它也会产生名称冲突错误。还有一个扩展类型库,Excel 也不让我引用。

所以当前引用的库是:
  • Microsoft Office 16.0 对象库(需要添加额外的功能区元素)
  • Microsoft OneNote 12.0 对象库
  • Microsoft XML,V3.0(我不得不从 Excel 默认建议的 V6 降级)
  • Microsoft Forms 2.0 对象库
  • Microsoft VBScript 正则表达式 5.5

  • 有了这些,我可以运行宏并调用 OneNote 应用程序,甚至可以获取笔记本和分区的列表。

    但是,当主机尝试运行时,OneNote 会严重崩溃:
    app.getPageContent sNodeID, sXML, piAll

    我尝试了一些方法,例如只带基本数据但结果相同,还尝试了各种其他笔记本、页面、部分。

    我认为这个问题可能与对象库的旧版本和/或在 getpagecontent 的文档中提到使用 xsSchema 参数(xs2013 等)有关。见 https://docs.microsoft.com/en-us/office/client-developer/onenote/application-interface-onenote

    欢迎任何想法,顺便说一句,如果有人想帮助改进工具包,欢迎联系。

    谢谢!

    最佳答案

    这是我通过反复试验找到的解决方案:

    一个。我犯了一个愚蠢的错误,直到我孤立地测试事物时才意识到。我相信我的类(class)名称与较新的库之一(可能是 clsOneNoteHandler)发生冲突。更改为唯一名称似乎解决了大部分问题,尤其是阻止了最新对象库的加载并最终导致 OneNote 崩溃。

    湾。我设法链接到 Onenote 15.0 对象库(不是扩展的),这似乎与我的 2010 代码兼容。我注意到它的运行速度明显变慢(使用 Office 2016 32 位重新镜像到 Windows 10 后的同一台机器)。

    C。我仍然保留了 Microsoft XML、V3.0 库引用和语法来解析 onenote XML 内容,就我所见,工作正常。

    我需要继续对其进行回归测试,但对我来说,最重要的功能是将页面导出为文档及其嵌入文件,这在 Onenote 2016 中仍然有效。

    希望这会帮助那里的某个人。

    问候并感谢您的评论!

    关于excel - 如何移植 OneNote 2010 vba 脚本(托管在 XLSM 文件中)以在 Onenote 2016 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564930/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com