我希望在VBA中使用一个简单的C#函数。为了这个问题,我们可以说C#中的例程如下所示:
using System;
namespace MyTestLibrary
{
public static class Class1
{
static string Shout(string message)
{
return message + "!";
}
}
}
我希望能够像这样在VBA端使用它。这会导致错误(“无法找到DLL入口点”Shout“):
Public Declare Function Yell Lib "C:\blah\MyTestLibrary.dll" Alias "Shout" (phrase As String) As String
Sub test()
MsgBox Yell("Hello World")
End Sub
进一步的研究显示了一种解决方法(我已经实现了这个实现):
Sub test()
Dim y As MyTestLibrary.Class1
Set y = New MyTestLibrary.Class1
MsgBox y.Shout("Hello World")
End Sub
但是,这不符合我的要求,因为我无法在我的工作簿中部署我的库,因为我必须手动添加引用。对于个人使用来说并不是什么大问题,但是当你必须将它部署到非技术导向的最终用户时会很头疼,因为必须手动引用每个dll。
TLDR 如何在VBA中使用C#创建的静态函数?
答案 0 :(得分:3)
我认为这是不可能的。您需要使用等效的非静态函数在C#或VB.Net中创建COM包装器,并从VBA程序中调用它。
答案 1 :(得分:0)
查看Forms Interop
项目,也许你可以搞清楚。如果您可以从VB6 / VBA调用表单,则可以调用函数。
link:http://www.codeproject.com/KB/dotnet/VB6_-_C__Interop_Form.aspx