【问题标题】:VBScript Create and Show UserFormVBScript 创建和显示用户窗体
【发布时间】:2022-04-05 14:05:20
【问题描述】:

我已经编写了一些 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

它目前可以工作,但创建一个 sub 并调用/运行它的方法似乎不是最好的。

如果我可以调用VBA.UserForms/UserForms,那么使用VBA.UserForms.Add(myForm.Name).Show 行会更好(在VBA 中工作)但我不知道如何,因为VBA 不是VBS 中的对象或其他东西像这样。

我真的找不到太多这方面的信息。

【问题讨论】:

标签: vba vbscript


【解决方案1】:

由于您要创建 Excel App 对象,我假设您的意思是使用 Excel 外部的 .vbs 文件创建表单。除非您深入研究 COM 对象,否则 VBScript 会限制您可以使用的 GUI 的数量 - 其中一个示例是 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”并在文件资源管理器中双击它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 2019-03-13
    • 2019-07-23
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多