2017-01-31 6 views
1

Visual StudioのIntelliSenseで何か問題が発生したときに、Excelアドインの作成に関するチュートリアルを書き直そうとしていました。私はこのコードを書いていた:このステップでOffice-jsにプロパティが表示されない

function updateStocks() { 
    Excel.run(function (ctx) { 
    var **range** = ctx.workbook.names.getItem("Stocks") 

を、すべてが大丈夫だったが、getItem後、私はIntelliSenseが私の変数rangeに関連する何かを理解することができませんでしたその時点で.getRange()を追加しようとしました。

Screenshot

は本当に「面白い」のは、プロパティが表示されていない場合でも、私は手動でのチュートリアルのコードを書くとき、コードが間違いなしで実行されているという事実です。

なぜこの現象が発生し、どのように修正できますか?

+0

こんにちはフレデリック・ル・グエン、問題は解決したのですか? –

答えて

0

.run内の他の種類のIntelliSenseを見ることはできますか?つまり、名前付きアイテムから範囲を取得するまですべてを持っていますか?範囲を別様に取得する場合は(たとえば、context.workbook.getSelectedRange())、IntelliSenseを取得しますか?

これは、CDNが誤ってnamedItem.getRangeメソッドが削除された問題(修正された唯一の問題であり、将来的にそれらを捕捉する手段を講じています)に関連する可能性があります。 。 「Can't get range from a defined name」を参照してください。 CDNは数週間前にパッチが当てられましたが、JS IntelliSenseファイル(「VSDOC」)はおそらく持っていなかったでしょう。その場合、CDN の新しい展開がの場合、VSDOCと他の場所の両方でgetRangeメソッドを使用するため、非常に早い段階で解決する必要があります。

FWIWでは、まだJS IntelliSenseエンジンの制限があります(残念ながら、たとえばPromisesに値を渡す、APIオブジェクトをパラメータとして関数に渡すなど)。このための唯一の正しい回避策は、TypeScriptを使用することです。これにより、コンパイラ/ IntelliSenseエンジンに宣言的にアサートすることができます。"この型はExcel.Rangeです!") - 他の多くの特典を提供しています。async/awaitは非常に重要なものです。私は個人的には、「最高の」Office.jsコーディング体験が必要な場合は、TypeScriptを使用することをお勧めします。その目的のために、私は"Building Office Add-ins using Office.js"の本にTypeScriptを使用する方法を説明します(全開示、私は著者ですが、多くの読者がリソースの有用性についてコメントしています)。この本は非常に多くのタイプスクリプト指向であり、IntelliSenseはその理由の1つです(また、async/awaitletが主なものです)。同じOffice.jsタスクを実行するJavaScript専用の方法については、付録も提供します。 TypeScriptの使用を開始するにはわずかな労力しかかかりません。一度やり直すと、私はあなたが振り返るとは思わないでしょう。

関連する問題