我编写了一些 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 中的对象或类似的东西.
我真的找不到太多关于这个的信息。
由于您正在创建一个 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”并在文件资源管理器中双击它。