HTA에 포함 된 JScript에서 Excel을 열 수 없음

Dec 02 2020

다음은 이 질문에 , 나는에 VBScript 코드를 변환 할 노력하고있어 이 페이지 의 JScript에. 아래 .hta코드를 실행하면 :

<HTML>
<BODY>
    <INPUT id=button1 name=button1 type=button value=Button>
    <SCRIPT LANGUAGE="VBScript">
        sub button1_onclick()
            dim app
            set app = createobject("Excel.Application")
            app.Visible = true
            dim wb
            set wb = app.workbooks.add
            end sub
    </SCRIPT>
</BODY>
</HTML>

버튼을 클릭하면 빈 Excel 시트가 열립니다. 예상대로. 그러나 VBScript 부분을 JScript로 변환하면

<HTML>
<BODY>
    <INPUT id=button1 name=button1 type=button value=Button>
    <script LANGUAGE="JScript">
        function button1_onclick() {
            // var app = WScript.CreateObject("Excel.Application");
            var app = new ActiveXObject("Excel.Application");
            app.Visible = true;
            var wb = app.Workbooks.Add();
        }
    </script>
</BODY>
</HTML>

버튼을 클릭해도 Excel이 전혀 열리지 않습니다. 문제가 무엇인지, 어떻게 해결할 수 있는지 알려 주시면 감사하겠습니다. 미리 지원해 주셔서 감사합니다.

답변

1 user692942 Dec 02 2020 at 16:53

Object_Event구문이 작동 하지 않는 이유는 무엇 입니까?

실제로 매우 간단한 Object_Event구문은 VBScript입니다. 이벤트가 JScript에서 자동으로 바인딩되도록하려면 올바른 구문을 사용하기 만하면됩니다 Object::Event. 여기에 자동 바인딩 된 이벤트를 사용하는 예제가 있습니다.

<html>
<body>
    <input id="button1" name="button1" type="button" value="Button">
    <script language="JScript">
        function button1::onclick() {
            var app = new ActiveXObject("Excel.Application");
            app.Visible = true;
            var wb = app.Workbooks.Add();
        }
    </script>
</body>
</html>

방금 이것을 테스트했고 작동하는 onclick것처럼 보이므로 @Teemu 가 주석에서 제안한 것처럼 이벤트 핸들러 가 누락되었을 수 있습니다 .

<html>
<body>
    <input id="button1" name="button1" type="button" value="Button" onclick="return button1_onclick();">
    <script language="JScript">
        function button1_onclick() {
            var app = new ActiveXObject("Excel.Application");
            app.Visible = true;
            var wb = app.Workbooks.Add();
        }
    </script>
</body>
</html>

유일한 실제 차이점은 요소 onclick에 이벤트 핸들러 가 포함된다는 것입니다 <input>.

onclick="return button1_onclick();"

클릭하면 새 통합 문서로 Microsoft Excel을 여는 버튼이 표시됩니다.


유용한 링크

  • HTA 파일의 자바 스크립트
  • HTA 응용 프로그램에서 프로그램 열기
  • Javascript를 사용하는 HTA의 ActiveX 이벤트 핸들러 (Javascript라고하는 사실은 JScript에 대한 잘못된 정보를 보여줍니다) .
  • MSDN (Scripting Clinic)-스크립팅 이벤트