2017-01-31 14 views
1

Visual Studio의 IntelliSense에 문제가있을 때 Excel 추가 기능 만들기에 대한 자습서를 다시 작성하려고했습니다. 되는 IntelliSense 내 변수 range에 관련된 아무것도 이해 할 수 없습니다 지적, 모든 것이 괜찮다고이 단계에서Office-js에 속성이 표시되지 않습니다.

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

하지만 getItem 후에, 나는 .getRange()를 추가하는 시도 :이 코드를 작성했다.

Screenshot

은 무엇 정말 "재미"것은 속성이 표시되지 않은 경우에도 내가 수동으로 튜토리얼의 코드를 작성할 때, 코드가 실수없이 실행된다는 사실이다.

왜이 문제가 발생합니까? 어떻게 해결할 수 있습니까?

+0

안녕하세요 Frederic Le Guen, 문제가 해결 되었습니까? 아니요? –

답변

0

.run 내에서 다른 유형의 IntelliSense를 볼 수 있습니까? 즉, 명명 된 항목에서 Range를 얻을 때까지 모든 것을 가지고 있습니까? 범위를 다르게 (예 : 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를 사용하는 것이 좋습니다. 이를 위해 필자는 서적에 TypeScript를 사용하는 방법을 설명합니다 (전체 공개, 필자입니다.). 많은 독자들에게 자원의 유용성에 대한 의견을 전했습니다. 이 책은 TypeScript 지향적 인 IntelliSense이며 그 이유 중 하나는 async/awaitlet입니다.하지만 동일한 Office.js 작업을 수행하는 JavaScript 전용 방법을 설명하는 부록을 제공합니다. TypeScript를 사용하기 시작하는 데는 약간의 노력 만 들지만 일단 그렇게하면 다시 되돌아 볼 것입니다.