Quizá no le veas el sentido a la siguiente entrada, y puedas preguntarte para qué me puede servir conocer cuál es el número de serie de un disco duro (o partición).
Una posible utilidad es proteger tu libro de trabajo para que sólo pueda ser abierto desde tu equipo.. es decir, además de incorporar una contraseña al fichero, o añadir un procedimiento que pida usuario y contraseña, podríamos emplear este Número de Serie de tu disco duro como control de acceso.
Seguridad al cuadrado!!
Para ello necesitaremos la propiedad .SerialNumber que nos indica precisamente lo que neceistamos, nos devuelve el número de serie decimal que se utiliza para identificar de forma única un volumen de disco.
Para comprobar que lo que obtenemos con esta function es cierto, podemos acceder al botón de Inicio de Windows, y luego haremos clic en el cuadro de "Búsqueda", donde escribiremos 'cmd'.
A continuación, en la ventana del Símbolo de sistema (o ventana de MS-DOS), escribe:
vol c:
o vol la unidad de la que quieras conocer el Número de Serie..
En mi caso, el número de serie de la unidad C: es: 14AD E4A0
Ahoara, para comprobarlo, insertaremos el siguiente código de un procedimiento Function en un módulo general:
Si ejecutamos nuestra función en la hoja de cálculo, comprobamos que todo coincide...:
Una posible utilidad es proteger tu libro de trabajo para que sólo pueda ser abierto desde tu equipo.. es decir, además de incorporar una contraseña al fichero, o añadir un procedimiento que pida usuario y contraseña, podríamos emplear este Número de Serie de tu disco duro como control de acceso.
Seguridad al cuadrado!!
Para ello necesitaremos la propiedad .SerialNumber que nos indica precisamente lo que neceistamos, nos devuelve el número de serie decimal que se utiliza para identificar de forma única un volumen de disco.
Para comprobar que lo que obtenemos con esta function es cierto, podemos acceder al botón de Inicio de Windows, y luego haremos clic en el cuadro de "Búsqueda", donde escribiremos 'cmd'.
A continuación, en la ventana del Símbolo de sistema (o ventana de MS-DOS), escribe:
vol c:
o vol la unidad de la que quieras conocer el Número de Serie..
En mi caso, el número de serie de la unidad C: es: 14AD E4A0
Ahoara, para comprobarlo, insertaremos el siguiente código de un procedimiento Function en un módulo general:
Function NumeroSerieUnidad(Optional ByVal LetraUnidad As String) As String 'Nota importante: Se recomienda activar la referencia de la librería 'Microsoft Scripting Runtime' 'Con esta función conseguimos el número de serie del disco duro (partición). 'Este Número de serie lo genera Windows al formatear la partición Dim fso As Object, Drv As Object Dim SerieUnidadDec As Long Application.Volatile 'Creamos un objeto FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") 'Asigamos la Letra de Unidad actual en caso de no especificarla en el argumento If LetraUnidad <> "" Then Set Drv = fso.GetDrive(LetraUnidad) Else Set Drv = fso.GetDrive(fso.GetDriveName(App.Path)) End If With Drv 'Devuelve True si la unidad especificada está preparada y False si no lo está. If .IsReady Then 'SerialNumber Devuelve el número de serie decimal 'que se utiliza para identificar de forma única un volumen de disco. SerieUnidadDec = Abs(.SerialNumber) Else SerieUnidadDec = -1 End If End With 'convertimos en Hexadecimal SerieUnidadHex = Application.WorksheetFunction.Dec2Hex(SerieUnidadDec) 'Devovemos valor con la función NumeroSerieUnidad = SerieUnidadHex 'Limpiamos las variables Set Drv = Nothing Set fso = Nothing End Function
Si ejecutamos nuestra función en la hoja de cálculo, comprobamos que todo coincide...:
Estimado la serie obtenida cambia si se formatea el disco duro???
ResponderEliminarHola Alan,
Eliminaren principio la identificación del disco duro, después de un formateo, sigue siendo la misma...
Pero no puedo asegurártelo.. es algo que escapa a mis conocimientos
Saludos
Hola Ismael, y como seria el código para comprobar si el archivo excell se esta ejecutando en un HDD determinado y sino es asi que se cierre el archivo?
ResponderEliminarTe agradecería mucho tu respuesta.
Hola JJM
Eliminarcon un condicional IF THEN.. tendrías que compararlo con el de tu HDD determinado, y si cumple cerrar archivo con workbook.close
Saludos cordiales!