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

时间:2011-02-06 13:38:40

标签: vb.net excel vba

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

worksheet.Cells(row,column).Value'提取值工作
worksheet.Cells(row,column).Font.ColorIndex'提取颜色索引WORKS
worksheet.Cells(row,column).Comment.Text'提取评论作品
worksheet.Cells(row,column).Formula'提取公式无效

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

1 个答案:

答案 0 :(得分:0)

感谢David在VBA中测试代码。在发布问题之前我应该​​这样做。

更新:我使用VBA测试了代码。有用。所以我回到我的VB.Net代码,发现了问题。我认为VB.Net属性中存在一个错误,这就是原因。

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

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会这样做。