Как написать Dll для использования в VBA (MS Access 2003) - C#
Формулировка задачи:
Добрый день!
По статье сделал Dll:
Выложил dll-ку поближе - на С:
В MSAccess пишу объявление:
обернул в метод класса "API":
и вызов:
при вызове выдаёт ошибку: Не найдена точка входа в dll для метода GetData
Что сделано не так?
Работает!
А в VB - нет. Почему?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
//using System.Data.SqlClient;
namespace DBCOM_Object
{
[Guid("694C1820-04B6-4988-928F-FD858B95C880")]
public interface DBCOM_Interface
{
[DispId(1)]
string GetData(string id);
}
// Events interface DBCOM_ObjectEvents
[Guid("47C976E0-C208-4740-AC42-41212D3C34F0"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface DBCOM_Events
{
}
[Guid("9E5E5FB2-219D-4ee7-AB27-E4DBED8E123E"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(DBCOM_Events))]
public class DBCOM_Class : DBCOM_Interface
{
private string cs = "__";
public DBCOM_Class()
{
}
public string GetData(string id)
{
return cs+id;
}
}
}Declare Function GetData Lib "C:\CloudData.dll" (s As String) As String
Function GetNum(id As String) As String GetNum = GetData(id) End Function
Dim a As New API
MsgBox a.GetNum("AA")
Can't find DLL entry point GetData in C:\CloudData.dll
Попробовал использовать Dll в C#:
sing System;
using System.Text;
using DBCOM_Object;
namespace sd
{
class Program
{
static void Main(string[] args)
{
DBCOM_Object.DBCOM_Class y = new DBCOM_Class();
Console.WriteLine(y.GetData("ff"));
Console.ReadLine();
}
}
}Решение задачи: «Как написать Dll для использования в VBA (MS Access 2003)»
textual
Листинг программы
[assembly: ComVisible(true)]