2013-12-17 3 views
0

JScript로 잠시 쓴 일부 C# 코드를 번역하는 데 조금 어려움이 있습니다. 장기적으로 Excel 통합 문서를 열어야합니다 (이미 열려있는 경우). C#을 달리 JScript에서는 Excel 응용 프로그램에 핸들을 얻기 위해 겉만 번지르르 한 ActiveXObject에 의존 : 당신이 API는 MSDN가 적용되는 모든 언어에서 매우 유사한 물체를 잡고 나면MS JScript에서 Excel의 이미 활성 인스턴스 가져 오기

var Excel = new ActiveXObject("Excel.Application"); 

. 그러나 ActiveXObject을 사용하여 Excel의 완전히 새로운 인스턴스를 만드는 것으로 보입니다. 나는 다음과 같은 코드를 사용한다면

:

var Excel = new ActiveXObject("Excel.Application"); 
alert(Excel.ActiveSheet === null); // assume alert works as it does in Javascript 

및 Excel이 이미 열려, 경고는 true로 돌아올 것입니다.

enter image description here

말할 필요도없이,이 모든 통합 문서 경우 검사에서 저를 유지 : 또한, 모든 변수는 새로운 EXCEL.EXE 프로세스가 나타날 수 가비지 수집에 의해 포착되지 않은 new ActiveXObject("Excel.Application") 설정 이미 열려 있고 추악한 "이 읽기 전용을 열겠습니까?"라는 경고가 나타납니다. 이 주위에 어떤 방법이 있습니까?

+0

유일하게 우려되는 "이 읽기 전용 읽기를 원하십니까?"라는 경고가 나오면 읽기 전용으로 통합 문서를 열면됩니다. –

+0

@DanielCook 아, 문제는 편집 및 초점이 필요하다는 것입니다. 문서가 이미 열려있는 동안 읽기 전용으로 열면 실제로 통합 문서의 두 번째 복사본이 열립니다 (이미 편집 가능한 첫 번째 복사본과 두 번째 읽기 전용 복사본). 그렇지 않으면 (또는 경고를 억제하는 것) 훌륭한 해결책이 될 것입니다. –

답변

3

MSDN에 따르면 JScript의 the GetObject function을 사용할 수 있습니다.

var Excel = GetObject(null, "Excel.Application"); 
+0

OP가 Javascript가 아닌 JScript에 대해 묻습니다. [This] (http://msdn.microsoft.com/en-us/library/vstudio/ebdktb00(v=vs.100) .aspx)가 더 적절한 참조가 될 것입니다. 구문이 다른지 아닌지 잘 모르겠습니다 ... –

+0

JScript.NET을 사용하는 사람이 누구인지 몰랐습니다! 두 매개 변수가 모두 "필수"로 나열되어 있습니다. 예제에서는'pathname' 매개 변수를 전달하는 호출을 보여 주며'pathname'을 생략하면 주석이 언급됩니다. " :) –

+0

테스트를 꺼려하기 때문에 코드가 옳은 것인지 확실하지 않습니다. 설명서가 명확하지 않다고 느꼈습니다. >.> 그러나 나는 이것이 유용하다고 확신하기 때문에 어쨌든 upvote 할 것이다. :) –