Codigo Vba project en excel

Quisiera me ayudarn a traducir lo siguiente:

Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Private Sub Workbook_Open()
Dim unidad As String
'Variable que retorna el Numero de serie del volumen
Dim Nserie, NserieNuevo, ClaveAutorizada, ClaveUsuario As String
'Para almacenar el sistema de archivos
Dim sistemaArchivos As String
'Para retornar el nombre del volumen
Dim volumen As String
'Para saber si funcionó o no la llamada a la función Api
Dim retorno As Long
volumen = String$(255, Chr$(0))
sistemaArchivos = String$(255, Chr$(0))
unidad = "C:\"
'Llamamos a la función, pasandole las variables
retorno = GetVolumeInformation(unidad, volumen, Len(volumen), Nserie, 0, 0, sistemaArchivos, Len(sistemaArchivos))
NserieNuevo = Val(Nserie) * 17 + 3571
Hoja1.Cells(6, 10) = NserieNuevo
ClaveAutorizada = Int(NserieNuevo / 23) - 51327
If Hoja1.Cells(7, 10) <> ClaveAutorizada Then
ClaveUsuario = Val(InputBox("No de Serie: " & NserieNuevo & " Escriba la clave autorizada"))
If ClaveUsuario = ClaveAutorizada Then
MsgBox ("Sistema Activado")
Hoja1.Cells(7, 10) = ClaveAutorizada
ThisWorkbook.Save
Else:
MsgBox ("Incorrecta contactar a: Supervisor")
ThisWorkbook.Save
ThisWorkbook.Close
End If
End If
Range("Z1").Select
ActiveCell.FormulaR1C1 = "Paquete"
Range("Z2").Select
ActiveCell.FormulaR1C1 = " "
Range("D5").Select
End Sub

1 respuesta

Respuesta
1

Te explico lo que hace cada sentencia de la macro.

- En esta parte declaran un función de la librería "kernel32"

Private Declare Function GetVolumeInformation Lib "Kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long

- La macro se ejecuta cuando abres el archivo

Private Sub Workbook_Open()

- Se declaran una serie de variables

    Dim unidad As String
    'Variable que retorna el Numero de serie del volumen
    Dim Nserie, NserieNuevo, ClaveAutorizada, ClaveUsuario As String
    'Para almacenar el sistema de archivos
    Dim sistemaArchivos As String
    'Para retornar el nombre del volumen
    Dim volumen As String
    'Para saber si funcionó o no la llamada a la función Api
    Dim retorno As Long
    volumen = String$(255, Chr$(0))
    sistemaArchivos = String$(255, Chr$(0))
    unidad = "C:\"
    'Llamamos a la función, pasandole las variables
    Retorno = GetVolumeInformation(unidad, volumen, Len(volumen), Nserie, 0, 0, sistemaArchivos, Len(sistemaArchivos))

Hasta esta parte lo que ha hecho la macro es poner en la variable "retorno" el resultado de la función "GetVolumeInformation".

- Después de que se ejecuta la función "GetVolumeInformation", la variable "Nserie" contiene un valor.

- Ese valor se multiplica por 17 y se le suman 3571, el resultado se almacena en la variable "NserieNuevo"

NserieNuevo = Val(Nserie) * 17 + 3571

- El resultado se almacena en la hoja1 en la celda J6

Hoja1. Cells(6, 10) = NserieNuevo

- Calcula un valor y lo almacena en la variable "ClaveAutorizada"

ClaveAutorizada = Int(NserieNuevo / 23) - 51327

- Compara el valor calculado con la celda J7

If Hoja1.Cells(7, 10) <> ClaveAutorizada Then

- Si la comparación no es igual, entonces solicita el número de serie

ClaveUsuario = Val(InputBox("No de Serie: " & NserieNuevo & " Escriba la clave autorizada"))

- Vuelve a comparar lo que escribes con el valor calculado

If ClaveUsuario = ClaveAutorizada Then

- Si son iguales, envía a pantalla el mensaje: "Sistema Activado"

- Vuelve a pone en la celda J10 el valor calculado almacenando en la variable "ClaveAutorizada"

- Guarda el libro

            MsgBox ("Sistema Activado")
            Hoja1.Cells(7, 10) = ClaveAutorizada
            ThisWorkbook. Save

- Si no es igual lo que escribiste a lo almacenado en la variable "ClaveAutorizada", entonces envía el mensaje: ""Incorrecta contactar a: Supervisor", guarda el libro y lo cierra

            MsgBox ("Incorrecta contactar a: Supervisor")
            ThisWorkbook.Save
            ThisWorkbook. Close

- Si desde un principio el valor calculado es igual a la celda "J7" entonces en la celda "Z1" escribe la palabra "Paquete". Borra el contenido de la celda "Z2"

    Range("Z1").Select
    ActiveCell.FormulaR1C1 = "Paquete"
    Range("Z2").Select
    ActiveCell.FormulaR1C1 = " "
    Range("D5").Select

Selecciona la cedla "D5" y termina.


Saludos. Dante Amor

No olvides valorar la respuesta.

-

¡Gracias! Amigo muy amable por tu atención y respuesta. Realmente eers todo un experto y de seguro muchos de nosotros te debemos nuestros conocimietos sobre l materia. Salud y suerte y que ne este ano todas tus expectativas se cumplan. Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas