2013-02-17 77 views
3

我认为我有一个相当不同的情况。我试图为我定期使用的基于excel的程序编写一个自定义函数。主要的问题是你不能在代码中重用函数并返回一个评估公式。所以我有这个想法。我可以从excel中将参数从参数中提取出来,让vb.net将这些参数放在代码中,然后在Excel中评估它。所以让我举个例子。如何在vb.net中评估excel公式

这段代码将在excel中定义一个名为“源代码”的名称。 ="Width+{0}+Height+{1}" 正如你所看到的,有两件事情正在进行。
#1。我将整个公式设置为字符串 #2。我插入一些“占位符”为将在被传递我的两个参数。

现在这两个参数将被放置在定义的名称以及 细胞B1(参数1)=1+1=2 (Cell can be evaluated in excel) 细胞C1(参数2)=10+10=20 (Cell can be evaluated in excel)

现在这里是功能发生的地方。 单元格D1 =myformulaparsingfunction(Source_Code, Argument_1, Argument_2)

在vb.net后端,我将拉入source_code字符串,然后使用参数解析占位符。所以我会得到这样的东西... ="Width+2+Height+20"

这是我遇到我的问题。当我解析公式时,它仍然是一个字符串。我需要有一种方法来告诉excel将这个字符串作为公式来评估。如果你们中的任何一个知道如何做到这一点,或者是另一种方法来实现我想要做的事情,我很乐意听到你的想法。有希望的是,上面的内容已经足够清晰,以了解我试图使用此代码的位置。提前致谢。

回答

4

你应该使用你想要的东西Evaluate方法。简短的样本:

Dim xlApp As Excel.Application 
Set xlApp = New Excel.Application 
xlApp.Visible = False 
MsgBox xlApp.Evaluate("=5+(10+6)*100") 
xlApp.Quit 
Set xlApp = Nothing 

了解更多:http://www.xtremevbtalk.com/archive/index.php/t-177848.html

+0

我读了一些关于这一点。不知道我是否可以使用它。我的应用程序使用电子表格dll。我可能应该在我的第一篇文章中提到这一点。这个评估函数可以与电子表格绑定吗?这将是完美的 – joeb 2013-02-17 20:51:40

+0

@joeb我不熟悉这一个 - 为什么你不试试回来? – Ksenia 2013-02-18 13:06:07