如何使用MS word 2007 vba检查窗口验证

如何使用MS word 2007 vba检查窗口验证,vba,ms-word,word-2007,Vba,Ms Word,Word 2007,我想检查不同组件上的窗口版本,以便在MS word 2007 vba上执行不同的任务。我尝试了在ms excel 2007 vba上应用的这段代码,该代码正在运行,但在ms word 2007 vba上没有 Dim TheOS As String Dim WinType As String TheOS = Application.OperatingSystem MsgBox ("TheOS ") 在ms word 2007 vba上,它返回一个编译错误:找不到方法或数据成员。我需要什么?如果希

我想检查不同组件上的窗口版本,以便在MS word 2007 vba上执行不同的任务。我尝试了在ms excel 2007 vba上应用的这段代码,该代码正在运行,但在ms word 2007 vba上没有

Dim TheOS As String
Dim WinType As String
TheOS = Application.OperatingSystem
MsgBox ("TheOS ")

在ms word 2007 vba上,它返回一个编译错误:找不到方法或数据成员。我需要什么?

如果希望vba代码可以在整个办公产品中使用,WMI是一种解决方案

Application.System.OperatingSystem的问题是,它不会返回任何有趣的内容

Application.System.Version可用。但是我使用WMI来提供正确的信息

 Sub test()
    Dim info As System
    'Well everything is windows NT today..
    Debug.Print Application.System.OperatingSystem
    'Short version string MajorVersion.MinorVersion
    Debug.Print Application.System.Version

    Dim objWMI As Object
    Dim objSystems As Object
    Dim objOs As Object

    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set objSystems = objWMI.ExecQuery("Select * from Win32_OperatingSystem")

    For Each objOs In objSystems
        Debug.Print objOs.Name 'Full name as in OS startup screen
        Debug.Print objOs.Caption ' Human readable name
        Debug.Print objOs.Version ' the correct windows version string
    Next

    Set objOs = Nothing
    Set objSystems = Nothing
    Set objWMI = Nothing

End Sub

如果希望vba代码可以在整个办公产品中使用,WMI是一种解决方案

Application.System.OperatingSystem的问题是,它不会返回任何有趣的内容

Application.System.Version可用。但是我使用WMI来提供正确的信息

 Sub test()
    Dim info As System
    'Well everything is windows NT today..
    Debug.Print Application.System.OperatingSystem
    'Short version string MajorVersion.MinorVersion
    Debug.Print Application.System.Version

    Dim objWMI As Object
    Dim objSystems As Object
    Dim objOs As Object

    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set objSystems = objWMI.ExecQuery("Select * from Win32_OperatingSystem")

    For Each objOs In objSystems
        Debug.Print objOs.Name 'Full name as in OS startup screen
        Debug.Print objOs.Caption ' Human readable name
        Debug.Print objOs.Version ' the correct windows version string
    Next

    Set objOs = Nothing
    Set objSystems = Nothing
    Set objWMI = Nothing

End Sub

这有点不清楚,所以请注意,返回的是Office版本,而不是Windows。例如,我使用的是64位windows,但我使用的是32位版本的office,因此返回了有关office使用内容的
windows(32位)NT 6.01
。在Word中,您可以通过
Application.System.OperatingSystem
实现类似的效果。我在excel 2007 vba中使用上述编码,Windows xp上的结果是“Windows(32位)NT 5.01”和“Windows(32位)NT 6.01”,适用于Win7。这有点不清楚,因此请注意,返回的是Office版本而不是Windows。例如,我使用的是64位windows,但我使用的是32位版本的office,因此返回了有关office使用内容的
windows(32位)NT 6.01
。在Word中,您可以通过
Application.System.OperatingSystem
实现类似的效果。我在excel 2007 vba中使用上述编码,Windows xp上的结果是Win7的“Windows(32位)NT 5.01”和“Windows(32位)NT 6.01”。“Application.System.Version”是区分WinXP和Win7所需要的。。谢谢“Application.System.OperatingSystem”只在两个操作系统上返回“windownt”。。。英雄联盟奇怪的但是为什么“Application.OperatingSystem”在excel vba中工作,它返回我“Windows(32位)NT 5.01”(只是感到困惑)总是很乐意提供帮助,如果您认为我的答案就是答案,请将其标记为答案;)。或者自己回答,只显示你需要的部分。我们希望尽可能多地回答问题!“Application.System.Version”是区分WinXP和Win7所需要的。。谢谢“Application.System.OperatingSystem”只在两个操作系统上返回“windownt”。。。英雄联盟奇怪的但是为什么“Application.OperatingSystem”在excel vba中工作,它返回我“Windows(32位)NT 5.01”(只是感到困惑)总是很乐意提供帮助,如果您认为我的答案就是答案,请将其标记为答案;)。或者自己回答,只显示你需要的部分。我们希望尽可能多地回答问题!