如何知道Office的VBA组件是否安装?
我的 Excel 插件需要安装 Excel 的 Visual Basic for Applications 选项才能正常工作。我希望我的安装(用 InnoSetup 编写)能够检测是否安装了 VBA,如果没有安装,则警告用户。
如何检测该选项是否已安装?
My Excel addin requires the Visual Basic for Applications option of Excel to be installed in order for it to work. I would like my install (which is written with InnoSetup) to be able to detect if VBA is installed and warn the user if it is not.
How can I detect if the option is already installed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
一种可能是检查 C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6 中是否存在 VBE6.DLL。或者在注册表中查找对该 DLL 或字符串 VBA 的引用。
请注意,对于 Office 2010,此位置/文件名可能有所不同,因为 VBA 编辑器中存在一些更改。
One possibility is to check for the presence of VBE6.DLL in C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6. Or poke about in the registry looking for references to that DLL or the string VBA.
Note that this location/file name might be different for Office 2010 as there are some changes in the VBA editor.
你为什么不尝试这样的功能......
在这里找到
Why don't you try a function like this...
found here
我们正在讨论 Windows Installer 组件。
安装程序有一个 API,您可以在其中请求是否安装了功能/组件。
ofcurse api 还会返回组件的安装位置。
如果需要,您可以安装缺少的组件。
您唯一需要的是组件和产品指南。
查看文档
We are talking about Windows Installer components.
The Installer has an API, where you can request if a feature/component is installed.
ofcurse that api also return where the component is installed.
if nessacary you can install missing components.
the only thing you need, is the component und product guid.
see documentation
检测 VBA 是否已安装的最佳方法是使用 MsiQueryFeatureState API 并询问 Windows Installer 该功能是否已安装。下面是一些在 VB.NET 中执行此操作的示例代码,但是您可以使用任何允许调用 COM 组件的语言来编写此代码(抱歉,不熟悉 InnoSetup)。
The best way to detect if VBA is installed is to use the MsiQueryFeatureState API and ask Windows Installer whether the feature is installed or not. Below is some sample code that does this in VB.NET, however you could code this in any language that allows you to call COM components (sorry, not familiar with InnoSetup).