在Excel加载项安装程序中将VBA调用转换为C#

我的Excel插件是用C#编写的,但安装程序通过VBAmacros调用Excel。 我想摆脱VBA。

我想知道下面的VBA对registry有什么作用。 从我所看到的,它在HKCU\Software\Microsoft\Office\14.0\Excel\Options增加了一个值。 是吗?

 Dim MyXLL As AddIn Set MyXLL = Application.AddIns.Add(addinFile) If (Not MyXLL Is Nothing) Then MyXLL.Installed = True Else MsgBox "Failed to add XLL" End If 

你应该尝试从c#中使用excel interop,而不是直接修改registry,这可能会导致恶梦(严重)。 你也必须处理不同版本的办公室等

通过interop添加插件:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.addins.add(v=office.11​​).aspx

添加后安装插件:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.addin.installed(v=office.11​​).aspx

使用VBA或automation / interop中的Addins方法可能是最简单的方法,但是很难处理安装在PC上的多个Excel版本的情况。
更全面的解决scheme包括为每个要安装的Excel版本编写OPENn密钥的安装脚本(其中n是最高当前OPENn密钥的1),并在卸载脚本中反转这些操作(您还需要重写其他OPENn键高于XLL的OPENn键)。
你可以在这里find一个使用LUA for Setup Factory的示例脚本http://www.jkp-ads.com/articles/AddinsAndSetupFactory.asp