【问题标题】:ExecuteExcel4Macro on custom xll functions在自定义 xll 函数上执行 Excel4Macro
【发布时间】: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


【解决方案1】:

您的 xlstring 是否返回临时对象的地址?

【讨论】:

  • 我一定是最后把这个整理出来了,因为现在客户正在使用它。我什至不记得我在说什么!
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 2016-04-09
  • 2018-04-22
  • 2018-10-23
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多