Version de Windows tipo entero

11/11/2005 - 20:45 por Henry Sanchez | Informe spam
Hola Grupo,

Tengo una aplicacion en Excel que, debido a sus caracteristicas requiere
Excel XP o posterior y Windows 2.000 o Posterior.

Por ese motivo mi codigo inicia verificando estas condiciones antes de
continuar.

Para verificar Excel XP o posterior no tengo problemas.

Para verificar Windows 2.000 pregunte hace algun tiempo en el foro y recibi
ayuda de Hector Miguel y KL. Con esta ayuda, de una forma muy sencilla pude
crear una funcion que devuelve la version de Windows en la que corren mis
macros, (Devuelve una cadena de caracteres).
Ese es precisamente el inconveniente, que no puedo hacer algo como:
If VersionWindows( ) < 2000 then
Msgbox
Exit Sub
End If

tal como lo hago con la version de Excel.

Tengo 2 equipos, ambos con Windows XP, por tanto se exactamente cual es la
cadena de caracteres que devuelve la funcion personalizada VersionWindows,
pero no se que cadena de caracteres devuelve esta funcion en un equipo con
Windows 98 y 95, Me, etc.

Para no alargar mas la exposicion:
Existe alguna forma de obtener la version de Windows como un numero entero?
de esta manera podria hacer un codigo que verifique si la version de Windows
es mayor a un numero dado? (de otra forma tendria que tener un listado con
todas las posibles cadenas de caracteres que devuelve la funcion para las
diferentes versiones de Windows, sin contar ademas, que si Microsoft saca al
mercado una nueva version de Windows, mi codigo tendria que ser modificado
con la molestia que esto implica).

Saludos,

Henry
 

Leer las respuestas

#1 Héctor Miguel
12/11/2005 - 04:26 | Informe spam
hola, Henry !

... una aplicacion en Excel... requiere Excel XP o posterior y Windows 2.000 o Posterior
... inicia verificando estas condiciones antes de continuar
... verificar Excel XP o posterior no tengo problemas
... verificar Windows 2.000... pude crear una funcion que devuelve la version de Windows
... (Devuelve una cadena de caracteres)
... el inconveniente, que no puedo hacer algo como:
If VersionWindows( ) < 2000 then... tal como lo hago con la version de Excel
... alguna forma de obtener la version de Windows como un numero entero?



1) prueba con una extraccion de los numeros 'finales' de la cadena de texto que devuelve application.operatingsystem
[p.e.] -> Val(Right(Application.OperatingSystem, 5))
-> si devuelve 5.00 -> se trata de windows 2000
-> si devuelve 5.01 -> se trata de windows xp
-> si devuelve >=5 -> se trata de windows 2000 [o 'superior'] ;)

2) si necesitas alguna sub-cadena/version del sistema operativo [como 'build' o 'servicepack' instalados]...
[no va a quedar otra que... visitar la pagina de Randy Birch] :))

saludos,
hector.

p.d. cadenas que podrias obtener segun la version de windows...
Windows (32-bit) NT 5.01 -> Win XP
Windows (32-bit) NT 5.00 -> Win 2000
Windows (32-bit) NT 4.00
Windows (32-bit) NT 3.51
Windows (32-bit) NT 3.50
Windows (32-bit) NT 3.10 -> Win NT
Windows (32-bit) 4.90 -> Win Me
Windows (32-bit) 4.10 -> Win 98 / 98SE
Windows (32-bit) 4.00 -> Win 95
Windows (32-bit) 1.30 -> Win 32s ...
Windows (32-bit) 1.25
Windows (32-bit) 1.20
Windows (32-bit) 1.15
Windows (32-bit) 1.10
Windows (32-bit) 1.0

Preguntas similares