如何在c#VSTO中添加来自XLAM的现有VBA代码

时间:2014-07-02 03:26:48

标签: c# excel vba excel-vba vsto

我有一个带有VBA代码的xlam,它通过名为“Group 1”的功能区组和一个单独的c#VSTO for Excel公开功能,通过名为“Group 2”的功能区组来公开功能。

我想将一些功能从VBA文件移到C#中。

a)我可以在某种程度上轻松地将CBA包含在C#中,所以我不必将它全部迁移到c#中吗? b)我可以在C#add in中创建功能区组项目/按钮,但是将代码引用返回到.xlam文件吗?

我已经看到这个链接(http://msdn.microsoft.com/en-us/library/dd465290(VS.100).aspx)似乎谈论发布多个解决方案,我认为这不是我想要的 - 尽管这种方法可以用于从内部部署.xlam VSTO应用程序(至少简化了软件包的部署?

1 个答案:

答案 0 :(得分:2)

  

我可以轻易地在C#中包含'VBA,所以我不必将它全部迁移到c#?

简单的答案是否定的,你不能。

如果您的“Group2”加载项已基于VB.NET ,则需要在C#(或VB.NET)中重写逻辑。一个VSTO加载项(假设它是一个应用程序加载项)。不要害怕,它应该是有趣而且容易+你会在学习C#的基础知识的同时学习它。如果您对VBA非常满意,那么它对您来说是一个优势,因为您很可能已经理解了Excel对象模型。

  

我可以在C#add in中创建功能区组项目/按钮,但是将代码引用返回到.xlam文件吗?

没有。如果您计划仅添加或修改C#的功能区,则可能需要查找Custom UI Editor

然后您可以在Visual Studio中设计自定义功能区,然后将XML复制并粘贴到自定义UI编辑器以实现几乎相同的外观。 Visual Studio带来的优势是智能化的!

要在自定义UI编辑器上进行良好的演练并创建功能区,请参阅Ron De Bruin's wesite