Red de Respuestas Legales - Derecho empresarial - Excel Cómo descifrar el proyecto VBA que no se puede ver

Excel Cómo descifrar el proyecto VBA que no se puede ver

Como parte importante de los derechos de propiedad intelectual, el código BA es cada vez más valorado. Sin embargo, la protección de los proyectos VBA es relativamente frágil.

Tengo un documento aquí que utiliza tecnología de cifrado para bloquear el proyecto VBA para que no se pueda ver. El "proceso" completo contiene un módulo estándar y tres procesos con aproximadamente 75 líneas de código. como documento de prueba.

La contraseña de protección del proyecto VBA es "shourou".

Si estás interesado en esto, ¡puedes descifrarlo!

Nota: El proyecto debe estar completamente descifrado, es decir, el proyecto VBA debe restaurarse, en lugar de simplemente leer o ver el nombre del proceso o el nombre del módulo.

El código aún se puede volcar

Módulo: ---------------------------- ------- mdlVBA ----------------------------------

Atributo VB_Name = "mdlVBA"

Opción explícita ''''Declaración de variable explícita

Opción Módulo privado ''''Proyecto externo deshabilitado

Const pública gstrUSER_MSG_TITLE como cadena = "ExcelHome.Net"

Función privada FieldsExists(intWsIndex como entero, opcional blnDisplayAlerts como booleano = True) como booleano

''''Función: verifique la hoja de trabajo especificada si el campo el nombre coincide con el nombre del campo incorporado

'''' Parámetros: intWsIndex: = índice de la hoja de trabajo: = si se muestra un cuadro de diálogo de advertencia cuando hay una discrepancia

Dim Ws como Excel .Worksheet

Dim astrFieldNames() como cadena

Dim vntHeader como variante

Dim I como entero

Dim intColumnSize Como entero

En caso de error, vaya a ErrorHandler

Seleccione caso intWsIndex

Caso 1

Establezca Ws = Hoja1

intColumnSize = 10 ' '''Número de campos

ReDim astrFieldNames(1 a intColumnSize)

astrFieldNames(1) = "OfficeID"

astrFieldNames(2) = "NombreOficina"

astrFieldNames(3) = "Región"

astrFieldNames(4) = "Provincia"

astrFieldNames(5) = "Ciudad"

astrFieldNames(6) = "Dirección"

astrFieldNames(7) = "StartData"

astrFieldNames(8) = "ExpiryData"

astrFieldNames(9) = "OfficeArea"

astrFieldNames(10) = "Reviser"

Fin de selección

vntHeader = Ws.Cells(1, 1) .Resize(1, intColumnSize).Value ''''Fila de encabezado

Para I = 1 a intColumnSize

Si no es StrComp(vntHeader(1, I), astrFieldNames(

I), vbTextCompare) = 0 Luego salga para

Siguiente

Si obtengo intColumnSize Entonces

FieldsExists = True

Else

Si blnDisplayAlerts = True Then

MsgBox Ws.Name amp; Chr$(34) amp; vntHeader(1, I) amp; Nombre " & Chr$(34) & astrFieldNames(I) & Chr$(34) & " no coincide ", vbExclamation, gstrUSER_MSG_TITLE

End If

End If

En caso de error, Ir a 0

Salir de la función

ErrorHandler:

Si ExcelHomeErrorHandler("Private Function FieldsExists") = True, entonces continúe con el siguiente

Función final

Función pública FileExists(strFileName As String) como booleano

''''Función: determinar si el archivo o carpeta existe

''''Parámetro: strFileName:=La ruta completa del archivo o carpeta que se va a verificar

FileExists = (Len(Dir(strFileName, vbDirectory)) gt; 0)

Función final

Función pública ExcelHomeErrorHandler(strProcName As String) como booleano

''''Función: Controlador de errores

''''Parámetros :strProcName:= Nombre del proceso de error

Dim strErrMessage As String

strErrMessage = "El programa se está ejecutando en" amp Chr$(34) amp strProcName amp; Se produjo un error durante el proceso.

" amp; vbCrLf amp; _

"Hora de error: " amp; Ahora amp; vbCrLf amp; _

" Código de error: " amp; Err.Number amp; vbCrLf amp; _

"Razón del error:" amp; Err.Description

Err.Clear ''''Borrar error

Si MsgBox(strErrMessage amp; vbCrLf amp; "¿Continuar?", vbExclamation vbYesNo, gstrUSER_MSG_TITLE) = vbYes Entonces

ExcelHomeErrorHandler = True

Else

Con aplicación

.StatusBar = False ''''Borrar la barra de estado

.DisplayAlerts = True ''''Restaurar cuadro de diálogo de advertencia

.EnableEvents = True ''''Restaurar eventos

.ScreenUpdating = True ''''Reanudar actualización de pantalla

Finalizar con

ExcelHomeErrorHandler = False

Finalizar si

Finalizar función