我正在使用 Excel 2007。我有用单独的二进制文件编写的 C# 代码。该代码在类上使用静态类和静态方法。我在我的 VSTO Excel 工作表项目中引用了 DLL。我必须添加或修改什么才能使其正常工作?
我的 C# 代码如下所示:
using System;
using System.Collections.Generic;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
namespace FooStatistics
{
[ComVisible(true)]
public static class Statistics
{
public static int Count(Range range)
{
return range.Count;
}
我希望能够将公式放入如下所示的 Excel 单元格中:
=FooStatistic.Statistic.Count(A1:A10)
管他呢。
我已经看到了这一点,但它似乎适用于 Excel 2003 中的非静态类。我不敢相信集成现在没有更好。
我已经查看了很多关于此的 StackOverflow 问题。它们似乎没有提供本机集成(很多人说,“使用 X 开源库”),而且不祥的是,许多不被 OP 接受。我不是在寻找“将其制成 COM 对象并从 VBA 调用它”。
所以我正在寻找:
- Excel 2007
- C# DLL 中的代码
- 从 Excel 单元格调用为 UDF
- 本机集成
所以这是另一个 StackOverflow 链接,其中两个响应者说:
- 据我所知,您不能直接在 VSTO 中创建 UDF。
- VSTO 不支持创建 Excel UDF。可以在 .Net 中创建自动化加载项,并且似乎是 Microsoft 认可的执行方式。
这是 2009 年 6 月的一个问题。这是真的吗 - 在 2009 年,您必须将 .NET 组件公开为 COM 服务器才能获得 Excel 的可调用 UDF?