C # /. NET DLL используется в VBA - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать библиотеку C # (.dll) с помощью .net Framework, которую можно запустить в Visual Basic (Excel).Я занимаюсь разработкой на Visual Studio.

После некоторых исследований я обнаружил, что мы можем использовать интерфейс COM для связи между DLL и VBA.Я имею в виду Вызов метода библиотеки .net из vba

Я не могу проверить опцию сборки «Зарегистрироваться для взаимодействия COM» из Visual Studio.Эта опция отключена. option_disable

Затем, когда я использовал «InterfaceType (ComInterfaceType.InterfaceIsDual)», Visual Studio говорит, что этот аргумент устарел. аргумент устарел

Наконец, я не могу вызвать свою функцию "HelloWorld" из кода VBA.

Точность:

  • Моя программа на C # /. Net успешно завершена

  • Я регистрирую свою DLL с помощью этой команды (зарегистрируйтесь без ошибок)

    regasm /s /codebase /tlb ClassLibrary3.dll
    

Myполная программа на C # /. net:

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace ClassLibrary3
{
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    [ComVisible(true)]
    public interface _Test
    {
        string HelloWorld();
    }

    [ClassInterface(ClassInterfaceType.None)]
    [ComVisible(true)]
    public class Test : _Test
    {
        public string HelloWorld() {
           return "Hello, World! ";
        }
    }
}

Есть вариант, который я могу использовать, кроме COM?

Или в чем проблема в моей программе?

Спасибоза помощь:)

Бастьен

1 Ответ

0 голосов
/ 18 октября 2018

не уверен, что вам нужно, но в прошлом в моем проекте доступа я смог использовать DLLImport из служб взаимодействия, как я знаю, добавив ссылку на .dll в ваш проект, вы можете использовать его таким образом.https://www.barcoderesource.com/dllimportvb.shtml Вы можете проверить эту ссылку?

пример с сайта:

<DllImport("connectcodefont.dll")> _
Public Shared Function Encode_Code39(ByVal instr As String, ByVal checkdigit As Integer, ByVal outstr As System.Text.StringBuilder, ByVal outstrmax As Integer) As Integer
End Function
...