2016-06-15 15 views
0

によってセルの計算を強制:私は、ブックに<a href="https://dev.office.com/reference/add-ins/excel/range" rel="nofollow">this page</a>からサンプルを実行しようとしたJavaScript API

Excel.run(function (ctx) { 
    var sheetName = "Sheet1"; 
    var rangeAddress = "F5:G7"; 
    var numberFormat = [[null, "d-mmm"], [null, "d-mmm"], [null, null]] 
    var values = [["Today", 42147], ["Tomorrow", "5/24"], ["Difference in days", null]]; 
    var formulas = [[null,null], [null,null], [null,"=G6-G5"]]; 
    var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress); 
    range.numberFormat = numberFormat; 
    range.values = values; 
    range.formulas= formulas; 
    range.load('text'); 
    return ctx.sync().then(function() { 
     console.log(range.text); 
    }); 
}).catch(function(error) { 
     console.log("Error: " + error); 
     if (error instanceof OfficeExtension.Error) { 
      console.log("Debug info: " + JSON.stringify(error.debugInfo)); 
     } 
}); 

計算モードがG7の結果は367で、automaticあるとき。対照的に、計算モードがmanualである場合、G7の結果は0である。つまり、式=G6-G5は再評価されません。

manualモードで、JavaScript APIによってG7の計算を強制する方法があれば誰にも分かりますか?

私たちがイメージできる方法は、計算モードを(automaticに)変更することですが、calculationModeはここでは読み取り専用です。

もう1つの方法は、calculate(calculationType: string)の方法を実行することですが、Excelで現在開いているすべてのブックを再計算します。これは非常にコストがかかり、われわれがしたいことではない可能性があります。私は、このような基本的な操作は関係なく、回避策のできない場合、それはかなり制限されるだろうと感じ

...瞬間

答えて

0

手動計算をトリガーするためのオプションの方法は、全体に対して計算()メソッドを使用することですワークブック。ただし、このアプリケーションインスタンスによって保持されているワークブックのみで、これをワークブック全体でトリガすべきではありません。アプリケーションオブジェクトは、アドインを実行している単一のExcelインスタンスのみを参照します。

+0

ロードマップのセルレベルで計算を有効にしていますか? – SoftTimur

+0

私はその特定の機能を認識していません。私はそれを[UserVoice](https://officespdev.uservoice.com/)に追加することを絶対にお勧めします。 –

+1

これにはすでにユーザーボイススレッドがあります... – SoftTimur

関連する問題

 関連する問題