У меня есть простая функция C #, которую я хочу использовать из VBA.Ради вопроса, допустим, что подпрограмма в 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 Как использовать статические функции, созданные на C # в VBA?