2011-02-06 2 views
1

これはどれほど難しいのでしょうか?私がしようとしているのは、与えられたワークシート内のセルの範囲の値、色、コメント、および任意の数式を抽出することです。究極の目標は、誰かがデータベースとしてAccessテーブルに使用していたスプレッドシートを変換することです。vb.netを文字列として使用しているセルからExcel式を抽出する

worksheet.Cells(row,column).Value「エキス値が
worksheet.Cells(row,column).Font.ColorIndexワークス」
worksheet.Cells(row,column).Comment.Text「エキスコメントが
worksheet.Cells(row,column).Formulaワークス」エキスカラーインデックスワークス抽出式.Formulaため

戻り値が.Valueと同じで動作しません。それは私が必要とするものではありません。私は数式のテキスト表現を探しています(数式内に埋め込まれたレート情報を抽出するため)。

+0

VBAで動作します。あなたが私たちに言っていないことがありますか?スプレッドシートには何が入っていますか? –

+0

Davidと同意する。セルに式があることは確かですか? – dbasnett

答えて

0

VBAでコードをテストしてくれたDavidに感謝します。私は質問を掲示する前にそれをしていたはずです。

更新:VBAを使用してコードをテストしました。できます。だから私は私のVB.Netコードに戻り、問題を発見しました。私はVB.Netのプロパティにバグがあると思います。理由はここにあります。

Excel.Worksheetへの参照を保持するExcelSheetクラスがあります。 Excel.Rangeへの参照を保持する別のクラスExcelRangeを返すインデクサー[行、列]を実装しています。私が気づいたバグは、第1のMsgBoxが式を文字列表現として表示し、第2の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がこのように動作するのか不思議です。

関連する問題