DESBORDAMIENTO ???

28/04/2008 - 08:22 por Orfao | Informe spam
Hola Grupo !

tratando de evitar que me copien los archivos les coloco una rutina al
inicio del libro que al abrir me genera el serial del disco del pc con el
siguiente codigo:
Sub codigo()
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("C:")))
serial = d.SerialNumber
End Sub

luego en otro pc cualquiera ejecuto un libro donde introduzco el serial
obtenido y obtengo una clave de acceso
con el siguiente codigo

Sub claves()
serialnum = InputBox("Serial")
clave = Left(Hex(serialnum), 2) & Right(Hex(serialnum), 2)
MsgBox clave
End Sub

lo he probado en varias ocasiones y con deferentes equipos y funciona
perfectamente
pero ahora trato de ejecutarlo en otra pc y me genera error 6 "desboramiento"
por que ????
el serial que obtengo es 2343545656
cual es el problema ? como corregirlo ?
GRACIAS...


Me alimento del conocimiento de todos
 

Leer las respuestas

#1 Héctor Miguel
28/04/2008 - 08:57 | Informe spam
hola, moises !

1) el error por desbordamiento se debe a que la funcion vba Hex(numero)
esta siendo "rebasada" en sus alcances por el numero serial obtenido: -> 2343545656

2) una (posible) forma alterna (al menos para este tipo de casos de numeros -muy- grandes)...
pudiera ser usar la funcion de hoja de calculo =hex.a.dec(...
(PERO... es del paquete herramientas para analisis y debe ser usada en ingles: =hex2dec(...)

-> tendrias que cambiar esta parte de tu codigo:
de: -> clave = Left(Hex(serialnum), 2) & Right(Hex(serialnum), 2)
a: -> clave = evaluate("left(dec2hex(" & serialnum & "),2)&right(dec2hex(" & serialnum & "),2)")

o... usar una celda "puente" para obtener en alguna hoja de calculo la conversion a hexadecimal...
o... proveer a tu codigo tambien con tu propio algoritmo de obtencion de numeros hexadecimales :-((

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
tratando de evitar que me copien los archivos les coloco una rutina al inicio del libro
que al abrir me genera el serial del disco del pc con el siguiente codigo:
Sub codigo()
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(fs.GetAbsolutePathName("C:")))
serial = d.SerialNumber
End Sub
luego en otro pc cualquiera ejecuto un libro donde introduzco el serial obtenido
y obtengo una clave de acceso con el siguiente codigo
Sub claves()
serialnum = InputBox("Serial")
clave = Left(Hex(serialnum), 2) & Right(Hex(serialnum), 2)
MsgBox clave
End Sub
lo he probado en varias ocasiones y con deferentes equipos y funciona perfectamente
pero ahora trato de ejecutarlo en otra pc y me genera error 6 "desboramiento" por que ????
el serial que obtengo es 2343545656
cual es el problema ? como corregirlo ?

Preguntas similares