Tidak dapat membuka Excel dari JScript yang disematkan di dalam HTA

Dec 02 2020

Mengikuti pertanyaan ini , saya mencoba mengonversi kode VBScript di halaman ini ke JScript. Jika saya menjalankan .htakode di bawah ini :

<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>

Ini membuka lembar Excel kosong setelah mengklik tombol. seperti yang diharapkan. Namun, jika saya mengonversi bagian VBScript ke 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>

itu tidak membuka Excel sama sekali saat mengklik tombol. Saya akan sangat menghargai jika Anda dapat membantu saya mengetahui apa masalahnya dan bagaimana saya dapat mengatasinya. Terima kasih atas dukungan Anda sebelumnya.

Jawaban

1 user692942 Dec 02 2020 at 16:53

Mengapa Object_Eventsintaks tidak berfungsi?

Ini sebenarnya Object_Eventsintaks yang sangat sederhana adalah VBScript, untuk memungkinkan acara mengikat secara otomatis di JScript Anda hanya perlu menggunakan sintaks yang benar Object::Event, berikut adalah contoh menggunakan acara yang terikat secara otomatis.

<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>

Baru saja menguji ini dan tampaknya berhasil, jadi mungkin saja Anda kehilangan onclickpengendali event seperti yang disarankan @Teemu di komentar .

<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>

Satu-satunya perbedaan nyata adalah penyertaan onclickevent handler pada <input>elemen.

onclick="return button1_onclick();"

Ini menampilkan tombol yang ketika diklik membuka Microsoft Excel dengan Buku Kerja baru.


Tautan Berguna

  • Javascript dalam File HTA
  • Buka program dari aplikasi HTA
  • Penangan peristiwa ActiveX dalam HTA menggunakan Javascript (fakta ini disebut Javascript hanya menunjukkan informasi yang salah di sekitar JScript) .
  • MSDN (Scripting Clinic) - Acara Scripting