2012-01-03 4 views
2

でExcelのセルの数式を設定UDFラッパーが含まれているC#のクラスライブラリとして実装されています。(私はVSTOを使用していない)は、アドインExcel用私はオートメーションを作成したC#関数

何私は自分のUDFでやりたいと思っているのは次のことです:式が入力されたセルのアドレスを取得します。

2>そのセルの式を自分のものに設定します。

次のように私はすでに>ポイント1を行っている:

Microsoft.Office.Interop.Excel.Application excelApp = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application"); 

    Microsoft.Office.Interop.Excel.Range target = (Microsoft.Office.Interop.Excel.Range)excelApp.get_Caller(System.Type.Missing); 

    string cellAddress = target.get_Address(Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value); 

    //Perform some operations based on address 

    //Assign a formula to my cell (This does not work !) 
    target.Formula ="=SUM(2,2)" 

これはhereからMSDNドキュメントに従って動作するはずです。

私は間違っていますか?セルの数式を設定できる他の方法はありますか?

おかげで、

+0

これは 'cellAddress.Formula =" = SUM(2,2) "'ですか? – xbonez

+0

"cellAddress"は、後で処理するためのセルアドレスを格納する文字列です。 "target"はExcelレンジです。 – shrikanth

答えて

2

UDFは呼び出し元のセルに値を返すことができます。独自の式を上書きする(または他のセルの内容を変更する)ことはできません。それを行うためのコマンドを作成する必要があります。

+1

こんにちは、もう少し詳しく説明できますか?あなたは「命令」によって何を意味しますか? – shrikanth

+0

"コマンド"は、ボタンまたはイベントによって起動されたコード、または基本的に式以外のコードです。 –

0

このターゲット.set_Valueしてみてください(RangeValueDataType:Type.Missing、値: "= SUM(2,2)");

+0

いいえ、動作しません。 が発生しました例外: \tメッセージHRESULTからの例外=:0x800A03EC \tタイプ= System.Runtime.InteropServices.COMException \tスタック=でSystem.RuntimeType.ForwardCallToInvokeMember(文字列をここでエラーメッセージがだ、私はそれのいずれかの意味を理解カントObject RangeValueDataType、Object value) – shrikanth

+0

ターゲットの値を取得しているかどうかをデバッグして確認できますか?またはそれが例外をスローする、GetActiveObjectを使用しているときにtaskmanagerを実行し、1つがある場合はexcelの他のインスタンスを閉じる –

+0

はい、「ターゲット」オブジェクトへの参照を取得しています。get_Address 方法。私はtarget.formulaも読むことができます: string f = target.formula; ただし、式を設定することはできません。 はい、私はExcelを実行しているインスタンスが1つしかないことを確認しました。 – shrikanth

1

'= SUM(2,2)'は '2 + 2'と同じです。

あなたは、たとえば、セルを追加したい場合は、「A1」と「A4」、あなたはこの形式を使用する必要があります「= SUM(A1、A4」)

か、「A1」からにセルを追加したいです'A4'、あなたは '= SUM(A1:A4)'を使います。

または全体の列 'B'、 '= SUM(B:B)'です。

関連する問題