【问题标题】:Cannot find all the addins loaded from XLStart folder in VSTO在 VSTO 中找不到从 XLStart 文件夹加载的所有插件
【发布时间】:2012-06-06 11:24:00
【问题描述】:
XLStart 文件夹中有一些 xla 和 xll 文件。在 C# 中,我想找出当前加载的插件。
使用Globals.ThisAddIn.Application.AddIns 无法访问这些插件,但我从here 找到了这个Globals.ThisAddIn.Application.VBE.VBProjects。使用Globals.ThisAddIn.Application.VBE.VBProjects 的问题是它没有列出我所有的 xla 和 xll 文件。
有什么想法可以列出从XLStart 文件夹加载的所有插件?
【问题讨论】:
标签:
excel
c#-4.0
vsto
excel-addins
xla
【解决方案1】:
默认情况下,从 XLSTART 目录加载的任何 Excel 文件(包括加载项)都不属于 Addins 集合。
从 XLSTART 加载的加载项文件将在 VBE 中可见,但由于它是加载项,因此该文件在 Excel 中不可见,并且在 Workbooks 集合中不可枚举。
枚举 VBE 项目是一种方法,但它要求 VBE 可以在用户的 Excel 安全设置下访问,并且在检查项目时,您需要了解已保存/未保存、受保护/未受保护的项目以及那些是其他项目引用的项目。
但是,仅仅因为 Workbooks 集合不会枚举不可见的加载项并不意味着它们不在 Workbooks 集合中.
如果您知道要查找的加载项的名称,则可以使用:
ThisAddIn.Application.Workbooks.get_Item("MyAddin.xlam")
因此,如果您枚举 XLSTART 目录中的文件名,然后检查:
ThisAddIn.Application.Workbooks.get_Item(addinName).FullName == addinFullName
对于每个文件,您就会知道加载了哪些 XLSTART 文件。