Excel加载项和VBA引用的范围是什么?

当我安装一个加载项(通过checkbox)什么是规则/机制pipe理多久,加载项保持安装? 它似乎是安装在应用程序级别,这意味着它适用于Excel应用程序中的任何工作簿,直到您自己取消选中。 如果这是正确的,这意味着只要用户自己安装加载项,他们应该没问题; 但他们将不得不第一次安装它(这可以通过编程来完成)。

关于VBA引用,我想这些不需要每次都被“检查”,这意味着它在文档的范围之内。 但是,如果这是真的,那么为什么当软件准备好分发时,人们推荐使用后期绑定方法? 后期绑定真的只是为了使其与不同的版本兼容,但不一定是使得DLL作为参考被“检查”? 在这个假设下,只要每个人都使用与我一样的Excel版本,放弃所有的后期绑定是否安全,只需手动添加引用?

加载项被安装到应用程序级别。 如果需要,可以使用function区XML精细调整外接程序如何显示(或不显示)到各种工作簿。

只要用户自己安装添加,就可以了; 但他们将不得不第一次安装它

是的,他们将不得不安装它。

关于VBA引用,我想这些不需要每次都被“检查”,这意味着它在文档的范围之内。

是的,版本控制。 它也为您节省了尝试和以编程方式添加引用的麻烦。 这可以通过path(这需要知道操作系统,版本等)或GUID(我从来没有真正能够做到这一点)完成。 这两种方法都需要进行错误捕获(如果path不存在或者其他方式不可访问,那么该怎么办?)。 所以只需使用迟绑定。

虽然使用早期绑定进行开发是有帮助的,因为智能感知,从用户的angular度来看,他们如何执行通常没有明显的差异,尽pipeEB可以说是更快,但差异通常可以忽略大多数应用程序。 相关的,如果在使用EB的时候依靠New关键字来实例化对象,我相信你使用LB的CreateObject函数实际上更快。 虽然这可能不明显。

我可以放弃所有在一起的晚期绑定,并通过手动添加引用来安全吗?

我只是简单地使用EB进行开发,然后在编译加载项之前将代码修改为延迟绑定的对象。

使用后期绑定更好,因为你不能保证每个系统都有相同的引用可用。 所以你应该只select你可以保证在每台机器上的引用,并为其余的分发DLL文件。

就范围而言,只要安装并激活,加载项中的公共子/函数/variables将可用于应用程序中的任何内容。 加载项中的引用只能用于加载项中的例程。