Tidak dapat membuka Excel dari JScript yang disematkan di dalam HTA
Mengikuti pertanyaan ini , saya mencoba mengonversi kode VBScript di halaman ini ke JScript. Jika saya menjalankan .hta
kode 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
Mengapa Object_Event
sintaks tidak berfungsi?
Ini sebenarnya Object_Event
sintaks 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 onclick
pengendali 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 onclick
event 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