使用vb.net作为string从单元格中提取Excel公式

这可能有多难…或者我想。 我想要做的是提取值,颜色,注释和任何给定的工作表中的单元格的公式。 最终目标是将某人曾用作数据库的电子表格转换为Access表格。

worksheet.Cells(row,column).Value '提取值WORKS
worksheet.Cells(row,column).Font.ColorIndex '提取颜色索引WORKS
worksheet.Cells(row,column).Comment.Text '提取注释WORKS
worksheet.Cells(row,column).Formula '提取公式不起作用

.Formula的返回值与.Value相同。 这不是我所需要的。 我正在寻找公式的文本表示(以提取公式中embedded的费率信息)。

感谢David在VBA中testing代码。 在发布问题之前,我应该做到这一点。

更新:我使用VBAtesting了代码。 有用。 所以我回到我的VB.Net代码,发现问题。 我认为VB.Net属性有一个错误,这是为什么。

我有一个类ExcelSheet,其中包含对Excel.Worksheet的引用。 它实现了一个索引器[row,colum],它返回另一个ExcelRange类,它包含对Excel.Range的引用。 我注意到的错误是第一个MsgBox显示公式作为他们的string表示,而第二个MsgBox显示评估数据。 我的快速解决scheme是捕获构造函数中的公式。

 Private myCell As Excel.Range Private myFormula As String Friend Sub New(ByRef cell As Excel.Range) myCell = cell MsgBox(myCell.Formula,,"Constructor") 'Displays formula as string myFormula = myCell.Formula 'Saving formula as string End Sub Public ReadOnly Property Formula() As String Get MsgBox(myCell.Formula,,"Property") 'Displays evaluated data Return myFormula 'Return formula saved as string in constructor End Get End Property 

这解决了我的问题,但我很好奇,为什么VB.Net这样的行为。