【问题标题】:C#/.net DLL used in VBAVBA 中使用的 C#/.net DLL
【发布时间】:2019-03-23 06:05:14
【问题描述】:

我尝试使用可在 Visual Basic (Excel) 中运行的 .net 框架创建 C# 库 (.dll)。我在 Visual Studio 上开发。

经过一番研究,我发现我们可以使用 COM 接口在 DLL 和 VBA 之间进行通信。 我指的是Calling a .net library method from vba

我无法检查 Visual Studio 中的“注册 COM 互操作”构建选项。此选项已禁用。 option_disable

然后,当我使用“InterfaceType(ComInterfaceType.InterfaceIsDual)”时,Visual Studio 告诉我该参数已弃用。 argument obsolete

最后,我无法从 VBA 代码中调用我的“HelloWorld”函数。

精度:

  • 我的 C#/.net 程序构建成功

  • 我用这个命令注册了我的 DLL(注册没有错误)

    regasm /s /codebase /tlb ClassLibrary3.dll
    

我的完整 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 之外,我还可以使用其他选项吗?

或者我的程序有什么问题?

谢谢你的帮助:)

巴斯蒂安

【问题讨论】:

  • 从这些符号中您似乎正在创建一个Universal Windows 类库?如果是这样,没有办法让它们 COM 可见似乎是合理的,为什么不使用 vanilla 类库?
  • 是的,尝试创建一个普通的类库项目,然后用 COM 属性装饰它。 COM 插件仍然适用于创建基于 Excel 的应用程序。

标签: c# .net excel dll com


【解决方案1】:

不确定您需要什么,但在我的访问项目中,我能够从互操作服务中使用 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

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 哦,感谢您仍然试图习惯这里的社区的警告 :) 我已经用引用编辑了我的答案。
  • 好东西 - 只需要快速报价以确保如果链接断开,答案仍然存在
  • 我只想在 C# 中创建 .NET DLL 并在 VBA (Excel) 中使用它....我知道如何在 VBA 中使用 DLL 但我不知道如何创建 DLL .NET 可访问来自 VBA。
  • 所以我假设您在 excel VBA 的代码屏幕中。这是带有图像的步骤的链接geeksengine.com/article/reference-dll.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 2011-09-14
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 2019-04-18
相关资源
最近更新 更多