Não é possível abrir o Excel a partir de JScript incorporado em um HTA
Seguindo esta pergunta , estou tentando converter o código VBScript desta página para JScript. Se eu executar o .hta
código abaixo :
<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>
Ele abre uma planilha de Excel vazia ao clicar no botão. como esperado. No entanto, se eu converter a parte VBScript para 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>
ele não abre o Excel ao clicar no botão. Eu agradeceria se você pudesse me ajudar a saber qual é o problema e como posso resolvê-lo. Obrigado pelo seu apoio antecipadamente.
Respostas
Por que a Object_Event
sintaxe não funciona?
Na verdade, a Object_Event
sintaxe muito simples é o VBScript, para permitir que os eventos sejam vinculados automaticamente ao JScript, você só precisa usar a sintaxe correta, ou seja Object::Event
, aqui está um exemplo de uso de eventos vinculados automaticamente.
<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>
Acabei de testar isso e parece estar funcionando, então pode ser que você não tenha o onclick
manipulador de eventos como @Teemu sugere nos comentários .
<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>
A única diferença real é a inclusão do onclick
manipulador de eventos no <input>
elemento.
onclick="return button1_onclick();"
Ele exibe um botão que, quando clicado, abre o Microsoft Excel com uma nova pasta de trabalho.
Links Úteis
- Javascript no arquivo HTA
- Abra programas do aplicativo HTA
- Manipuladores de eventos ActiveX em um HTA usando Javascript (o fato de ser chamado de Javascript apenas mostra a desinformação em torno do JScript) .
- MSDN (Scripting Clinic) - Eventos de Scripting