es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El código Vbscript no se ejecutará correctamente en una subrutina dentro de un HTA, pero sí lo hace fuera de la subrutina.

Tengo un problema que no puedo resolver. Tengo un archivo hta simple que consulta un archivo xml y muestra una ventana de mensaje que contiene un valor específico. Por lo que puedo ver, el código debería funcionar igual, pero no lo hace.

El xml aquí:

<?xml version="1.0" encoding="UTF-8"?>
<food>
     <fruit>
           <name>Apple</name>
     </fruit>
</food>

Aquí está el código que funciona:

<head>
<title>Test</title>
<hta:application applicationname="Test" scroll="no" singleinstance'"yes"="">
</hta:application></head>

<script language="vbscript">

Dim xmlDoc, Target

Set xmlDoc = CreateObject("Msxml2.DOMDocument")
            xmlDoc.setProperty "SelectionLanguage", "XPath"
            xmlDoc.Async = "False"
            xmlDoc.load("C:\Temp\example.xml")

            Set Target = xmlDoc.selectSingleNode("/Food/Fruit/Name")

msgbox Target.text

</script>

Cuando intento ejecutar desde una subrutina, no sucede nada. ¿Sabes qué me falta?

Código no funcional:

<head>
<title>Test</title>
<hta:application applicationname="Test" scroll="no" singleinstance'"yes"="">
</hta:application></head>

<script language="vbscript">

Sub RunThisSubroutine

Dim xmlDoc, Target

Set xmlDoc = CreateObject("Msxml2.DOMDocument")
            xmlDoc.setProperty "SelectionLanguage", "XPath"
            xmlDoc.Async = "False"
            xmlDoc.load("C:\Temp\example.xml")

            Set Target = xmlDoc.selectSingleNode("/Food/Fruit/Name")

msgbox Target.text

End Sub
</script>

<body>
<input id="runbutton" class="button" type="button" value="Execute" name="button1" onclick="RunThisSubroutine">
</body>
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar en la sintaxis de tu atributo onClick en la etiqueta de entrada. Intenta actualizar el atributo onClick de la siguiente manera:

    onClick="VBScript: RunThisSubroutine()"
    

    Esto debería especificar que deseas utilizar VBScript para llamar a la función RunThisSubroutine.

Comments are closed.