VBS代码无法在HTA中工作(WScript声明)

时间:2016-05-24 16:13:18

标签: excel excel-vba vbscript hta vba

我目前正致力于开发一个界面,让用户可以选择他们想要生成哪个报告,但是我对“WScript"”的声明有疑问。 。

我也附上了错误。由于我在线之间固定了间距,所以不要注意线号 - 我用粗线表示我错误的线路。非常感谢任何帮助(我能够正确地格式化我的问题)。

<TabControl Template="{StaticResource CustomTabControlTemplate}">
    ...
</TabControl>

enter image description here

2 个答案:

答案 0 :(得分:2)

使用Windows脚本宿主(cscript.exe或wscript.exe)运行脚本时,会出现内置的WScript对象。另一方面,HTA文件基本上运行IE(尽管在允许本地文件系统和COM对象访问的模式下)。没有内置的WScript对象,尽管可以从WSH中使用的COM对象也可以在HTA中使用(例如,我在using the WScript.shell object上快速找到这篇文章)。

您需要在HTA中以类似Web的方式执行操作。使用setTimeout或类似的东西来延迟功能直到以后。我快速搜索了如何从HTA中获取当前路径并找到a page,尽管可能还有其他方法。

另见this related question

答案 1 :(得分:0)

以下是一个示例HTA文件,其中显示了WScript.ScriptFullNameWScript.Sleep方法的解决方法:

<html>  
    <head>  
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>WScript workaround</title>  
        <HTA:APPLICATION
            ID="objHTA"  
        >  
    </head>  
    <body>  
        <script Language="VBScript">

            ' output full path to HTA
            document.write GetFullName()

            ' wait 5 seconds and close
            Sleep 5
            self.close

            Function GetFullName()
                GetFullName = Replace(objHTA.commandLine,"""","")
            End Function

            Sub Sleep(lngDelay)
                CreateObject("WScript.Shell").Run "Timeout /T " & lngDelay & " /nobreak", 0, True
            End Sub

        </script>  
    </body>  
</html>