gpt4 book ai didi

c# - 在 C# 中创建 Excel 宏定义

转载 作者:行者123 更新时间:2023-11-30 22:43:16 24 4
gpt4 key购买 nike

我想在我的 C# 代码中创建一个函数,它可以像宏一样从 VB 中调用。

即VB代码应该能够做到:

sub vb_method
csharp_method("some_parameters")
end sub

并调用我的 C# 方法:

public object csharp_method(String parameter) {
...
}

我知道这可以用 C++ 完成:

LPXLOPER retval;
LPXLOPER module; // = something
LPXLOPER parameters[] = { module,
"cpp_function", "parameter_type_info",
"MacroName", "text",
2,
... };
Excel4v(xlfRegister, retval, parameter_count, parameters);

这会注册我的 cpp_function,以便可以通过名称 MacroName 调用它。但它使用了 XLOPER 的东西(这很让人头疼),而且它是用 C++ 编写的。

神奇的 2 告诉 Excel 将我的函数用作宏。然后可以从 VB 或使用 ExecuteExcel4Macro 调用我的 c++ 代码。我还可以使用它来注册用户定义的函数 (UDF) - 只需使用神奇的 1 即可。 (有关 xlfRegister 的更多详细信息,请在此处注册:http://msdn.microsoft.com/en-us/library/bb687900.aspx)

C# 使创建 UDF 变得非常容易,但我需要一种方法将我的函数注册为宏而不是公式。

那么如何让宏调用我的 C# 代码呢?

最佳答案

首先,您可以使用 Excel-Dna 在 C# 或 VB.NET 中生成 .xll,而无需处理 XLOPER 或 C++ (可从 http://exceldna.codeplex.com 免费获得)。

因此,您只需添加一个属性,就可以使您的 C# 方法在 Excel 中作为函数使用(通过 0xA3 描述的类型的包装器)

[ExcelFunction(Name="MacroName")]
public object csharp_method(String parameter)
{...}

其次,您可以使用 Application.Run 从 VBA 调用函数和宏。所以你可以说

  Dim result As Variant
result = Application.Run("MacroName", mystring)

关于c# - 在 C# 中创建 Excel 宏定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4028232/

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