【发布时间】:2011-02-27 19:53:38
【问题描述】:
我有一个用于 Excel 的 C++ .xll 插件。以下测试工作表函数适用于加载的 xll:
LPXLOPER __stdcall Test()
{
return &xlstring("Yayage",true)
}
即=Test() 在工作表中返回“Yayage”。 xlstring 是我自己的自定义方法,它将字符串转换为 excel 字符串,并指定是 excel 还是 xll 负责释放其内存。
我打算使用 VBA 为 2003 及以前的版本生成一个“GUI 伴侣”插件,以及为 2007 及更高版本生成一个 C# Excel 2007 插件项目。它们都可以与与 Web 服务通信的独立于版本的 .xll 一起使用。
C# 和 VBA 都具有以下 Excel 函数: Application.ExecuteExcel4Macro(字符串) 应用程序.评估(字符串) Application.Run(...)
这些工作正常(除了 .Run ,它在 C# 中需要 32 个参数)与返回字符串的普通工作表函数,例如在 VBA 中:
MsgBox Application.<Any above method>("=Trim("" Billy Bob Fred "")")
生成一个包含“Billy Bob Fred”的消息框
但是,我无法让它与我的任何自定义工作表函数一起使用。将它们注册为命令而不是工作表函数也不起作用。
我尝试了不同风格的函数名,有和没有 = / (),以及我能想到的几乎所有其他方式。
谁能帮我解决这个问题?
【问题讨论】:
-
那么,您正在尝试
Run("=Test()")?有什么不好的?错误的字符串?空字符串?错误信息?
标签: c# c++ excel vba excel-addins