Excel kann nicht über JScript geöffnet werden, das in eine HTA eingebettet ist
Nach dieser Frage versuche ich, den VBScript-Code auf dieser Seite in JScript zu konvertieren . Wenn ich den folgenden .hta
Code ausführe:
<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>
Beim Klicken auf die Schaltfläche wird eine leere Excel-Tabelle geöffnet. wie erwartet. Wenn ich jedoch den VBScript-Teil in JScript konvertiere
<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>
Beim Klicken auf die Schaltfläche wird Excel überhaupt nicht geöffnet. Ich würde mich freuen, wenn Sie mir helfen könnten, zu wissen, was das Problem ist und wie ich es lösen kann. Vielen Dank für Ihre Unterstützung im Voraus.
Antworten
Warum funktioniert die Object_Event
Syntax nicht ?
Es ist eigentlich eine sehr einfache Object_Event
Syntax, VBScript. Damit Ereignisse automatisch in JScript Object::Event
gebunden werden können, müssen Sie nur die richtige Syntax verwenden . Hier ist ein Beispiel für die Verwendung automatisch gebundener Ereignisse.
<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>
Ich habe dies gerade getestet und es scheint zu funktionieren. Es kann also sein, dass Ihnen der onclick
Event-Handler fehlt, wie @Teemu in den Kommentaren vorschlägt .
<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>
Der einzige wirkliche Unterschied besteht in der Einbeziehung des onclick
Ereignishandlers in das <input>
Element.
onclick="return button1_onclick();"
Es wird eine Schaltfläche angezeigt, die beim Klicken Microsoft Excel mit einer neuen Arbeitsmappe öffnet.
Nützliche Links
- Javascript in der HTA-Datei
- Öffnen Sie Programme aus der HTA-Anwendung
- ActiveX-Ereignishandler in einem HTA, die Javascript verwenden (die Tatsache, dass dies als Javascript bezeichnet wird, zeigt nur die Fehlinformationen rund um JScript) .
- MSDN (Scripting Clinic) - Scripting-Ereignisse