Impossible d'ouvrir Excel à partir de l'intégration JScript dans un HTA
Suite à cette question , j'essaye de convertir le code VBScript de cette page en JScript. Si j'exécute le .hta
code ci-dessous :
<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>
Il ouvre une feuille Excel vide en cliquant sur le bouton. comme prévu. Cependant, si je convertis la partie VBScript en 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>
il n'ouvre pas du tout Excel en cliquant sur le bouton. Je vous serais reconnaissant si vous pouviez m'aider à savoir quel est le problème et comment je peux le résoudre. Merci d'avance pour votre soutien.
Réponses
Pourquoi la Object_Event
syntaxe ne fonctionne-t-elle pas ?
C'est en fait une Object_Event
syntaxe très simple est VBScript, pour permettre aux événements de se lier automatiquement dans JScript, il vous suffit d'utiliser la syntaxe correcte qui est Object::Event
, voici un exemple utilisant des événements liés automatiquement.
<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>
Je viens de tester cela et cela semble fonctionner, il se peut donc que vous manquiez leonclick
gestionnaire d'événements comme le suggère @Teemu dans les commentaires .
<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>
La seule vraie différence est l'inclusion du onclick
gestionnaire d'événements sur l' <input>
élément.
onclick="return button1_onclick();"
Il affiche un bouton qui, lorsqu'il est cliqué, ouvre Microsoft Excel avec un nouveau classeur.
Liens utiles
- Javascript dans le fichier HTA
- Ouvrir des programmes à partir de l'application HTA
- Gestionnaires d'événements ActiveX dans un HTA utilisant Javascript (le fait que cela s'appelle Javascript montre juste la désinformation autour de JScript) .
- MSDN (Scripting Clinic) - Événements de script