VBScript创建并显示用户窗体

时间:2018-04-13 09:16:55

标签: vba vbscript

我编写了一些Excel VBA,现在我正在测试VBScript。我正在尝试创建一个表单/窗口,过了一段时间我设法创建了这个代码:

Dim ExApp
ExApp = CreateObject("Excel.Application")
'ExApp.Application.Visible = True
Dim Workbook
Set Workbook = ExApp.Workbooks.Add
Dim myForm
Set myForm = Workbook.VBProject.VBComponents.Add(3)
Workbook.VBProject.VBComponents.Add(1).CodeModule.AddFromString "Function getForm()" & vbNewLine & "Set getForm = " & myForm.Name & vbNewLine & "End Function"
Dim userForm
Set userForm = ExApp.Run("getForm")
'VBA.UserForms.Add(myForm.Name).Show

它目前有效,但创建子和调用/运行它的方法似乎不是最好的。

如果我可以拨打VBA.UserForms / UserForms,那么使用行VBA.UserForms.Add(myForm.Name).Show(在VBA中工作)会更好但我无法弄清楚自VBA以来的情况不是VBS中的对象或类似的东西。

我真的找不到太多关于此的信息。

1 个答案:

答案 0 :(得分:0)

由于您正在创建Excel App对象,因此我假设您的意思是使用Excel外部的.vbs文件创建表单。 VBScript限制了您可以使用的GUI数量,除非您深入了解COM对象-上面的注释中的omegastripes链接了一个示例。但是omegastripes确实首先提到了“ HTA”,我发现它是一个非常简单的替代方法(如果您已经熟悉HTML)。这是取自https://technet.microsoft.com/en-us/library/ee692768.aspx

的示例
<head>
     <title>Operating System Version</title>
     <HTA:APPLICATION 
          APPLICATIONNAME="Operating System Version"
          SCROLL="yes"
          SINGLEINSTANCE="yes"
     >
</head>

<script language="VBScript">

    Sub GetOSVersion
       strComputer = "."
           Set objWMIService = GetObject("winmgmts:\\" & strComputer &  "\root\cimv2")

           Set colOperatingSystems = objWMIService.ExecQuery _
               ("Select * from Win32_OperatingSystem")

           For Each objOperatingSystem in colOperatingSystems
               Msgbox objOperatingSystem.Caption & " " & _
                   objOperatingSystem.Version
           Next
    End Sub
</script>

<body>
<input type="button" value="Operating System" name="run_button"  onClick="GetOSVersion">

</body>

将该代码另存为“ test.hta”,然后在“文件资源管理器”中双击它。