gpt4 book ai didi

c# - 如何在 Excel VBA 中使用 c# 类?

转载 作者:行者123 更新时间:2023-11-30 16:13:15 25 4
gpt4 key购买 nike

我有一个独立的 c# 应用程序,它可以做一些特定的事情(监听 TCP 端口并读出通过语音合成器到达它的所有字符串)。如何使 C# 类对 VBA 程序可见,就像其他“引用”对它可见一样?我会很感激简短而干净的例子。出于某种原因,我很难找到其中之一。

如果有一些特定于 c# <-> vba 交互的陷阱,我也想知道这些。

这是一段 C# 代码。我构建的是一个带有“Register for COM interop”设置的类库。当我将生成的 .tlb 文件添加到 VBA 引用列表时,我希望看到具有 SayCom 类的 SayCom 库以及 2 个方法,square 和 getCount。我不这么认为。我错过了什么?

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

[assembly: CLSCompliant(true)]

namespace SayCom
{
[CLSCompliant(true)]
[ComVisible(true)]
public class SayCom
{
int count;

public SayCom()
{
count = 0;
}

[ComVisible(true)]
public int square(int x)
{
++count;
return x * x;
}

[ComVisible(true)]
public int getCount()
{
return count;
}
}
}

最佳答案

这对我有用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace ClassLibrary1
{
[Guid("BBF87E31-77E2-46B6-8093-1689A144BFC6")]
[ComVisible(true)]
public interface MyMiniSubs
{
int square(int x);
int getCount();
}

[Guid("BBF87E31-77E2-46B6-8093-1689A144BFC7")]
[ClassInterface(ClassInterfaceType.None)]
public class Class1 : MyMiniSubs
{

int count;

public Class1()
{
count = 0;
}

[ComVisible(true)]
public int square(int x)
{
++count;
return x * x;
}

[ComVisible(true)]
public int getCount()
{
return count;
}
}
}

enter image description here

关于c# - 如何在 Excel VBA 中使用 c# 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21891232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com