为Excel vba创build对象库

我有一个用C#写的GUI。 这是一个交互式button和文本的网格控制寄存器映射。 我想创build一个用于该GUI的API在Excel vba中使用。 我一直无法find任何如何创build这样的事情的例子或文件,但我曾经使用过其他公司的对象库。

我试图创造这个,我遇到了一些问题,即只能在我的电脑上运行 。 另外,如果我移动到我的电脑上的另一个文件夹,它也打破了。

Excel vba代码:

Sub Test() Dim impclass As New ZZVISIBLE_FROM_EXCEL_CLASS MsgBox impclass.DotNetMethod_SQR(5) End Sub 

C#库类代码:

 using System; using System.Collections.Generic; using System.Text; namespace ZZVISIBLE_FROM_EXCEL_LIBRARY { public class ZZVISIBLE_FROM_EXCEL_CLASS { public Double DotNetMethod_SQR(Double input) { return input * input; } } } 

这个基础的例子使用C#库类来数字和Excel VBAselect数字5.这是我希望做的事情的基本框架,如:

grid.writecell(22,1001)

grid.getcell(22)

grid.resetall()

grid.loadfile("C:\griddata\config_default")

在这里输入图像说明

有些引用来制作这些对象库,甚至是它们被称为最有用的! 在Google上search“自定义excel vba引用”到目前为止没有任何用处,所以我决定在这里发帖寻求帮助。

另外,我很早就在项目中说“你做错了,做这个”types的答案也是受欢迎的!

首先,您需要知道您正在使用的dotnet版本,以便您使用:C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe或c:\ Windows \ Microsoft.NET \ Framework \ v4 .0.30319 \ RegAsm.exe

其次,您需要知道是否要将dll注册为32位或64位,所以对于32位使用相同的前一个path,或者在64位的情况下只使用Framework64而不是Framework

一旦完成,你可以很容易地在你的vba脚本中添加对这个程序集的引用: 在这里输入图像说明

一旦添加,你可以实例化任何类中的任何类存在于DLL中

你有几个select:

1)创build一个程序集并使用regasm使其可见

看到关于CodeProject的文章

http://www.codeproject.com/Articles/555660/Extend-your-VBA-code-with-Csharp-VB-NET-or-Cpluspl

2)为了使Excel的C#程序集可见,你必须使其COM可见,并将ReferenceAssemblyFromVbaProject设置为true。

请参阅以下MSDN文章以获取更多信息:

http://msdn.microsoft.com/en-us/library/bb608604.aspx

谢谢,凯文

你可以将你的库包装在一个Excel-DNA加载项中。 ( Excel-DNA是我为了将.NET与Excel集成而开发的免费库)。 这可能会缓解COM的注册问题(允许您在不需要pipe理员权限的情况下部署COM对象模式)。

如果你想公开一些function作为用户定义的函数,你可以从Excel中的工作表中调用,添加一个function区或类似的东西。

为了使用Excel-DNA将对象模型暴露给VBA,我build议MikaelKatajamäki将这些post作为起点:

对于一般的Excel-DNA支持,我build议你使用Excel-DNA Google组 。