gpt4 book ai didi

c# - 解析器将 .net 字典或列表转换为 VBA 的等效字典或集合

转载 作者:行者123 更新时间:2023-12-04 22:09:17 26 4
gpt4 key购买 nike

我必须将 .net 字典或对象列表类型传递给 VBA。
但是当我在 VBA 端传递 .net 字典时,我无法在 .net 端看到字典的元素。

我的 C# 代码

Dictionary<string,object> dict = new Dictionary<string,object>();
dict.Add("First", "1");
dict.Add("Second", "2");
dict.Add("third", "3");
dict.Add("Forth", "4");

我将 C# 中的 VBA 宏称为
Application.Run("MyVBAMacro", dict);

在 VBA 方面我的宏是
public Sub MyVBAMacro(var as variant)

end Sub

我也试过
public Sub MyVBAMacro(var as Scripting.Dictionary)

end Sub

但对我不起作用。

在 VBA 的 WATCH 窗口中,我没有得到字典元素。

所以我认为.net 和 VBA 对象是不一样的。
那么是否有任何解析类可以将我的 .net 对象转换为等效的 VBA 对象?

.net List 对象也有问题。
.net 数组工作正常,但我想将对象的字典或集合类型传递给 VBA。

请让我知道是否有解决方案。

谢谢,
莫尼尔甘加尔

最佳答案

在 VBA 和 .NET 之间进行互操作时需要使用 COM
这是一个简单的开始:COM Interop

但它很快就会变得更加复杂,我建议在执行此类任务时阅读通用 COM、编码、引用计数和类型库的主题。

使该字典 COM 可见的简单示例

[ComVisible(true)]
public interface IDictWrapper
{
object GetByKey(string key);
}

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(IDictWrapper))]
public class DictWrapper: Dictionary<string,object>, IDictWrapper
{
public object GetByKey(string key)
{
return base[key];
}
}

关于c# - 解析器将 .net 字典或列表转换为 VBA 的等效字典或集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820749/

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