Crear dll para utilizarla en Excel

17/07/2008 - 11:53 por ~ jose ~ | Informe spam
Hola, muy buenas;
Tengo un problema que no consigo solucionar.
Quiero ocultar el código de las macros que utilizo en Excel y sé que
es muy facil desproteger el proyecto VBA si está con contraseña, así
que se me ha ocurrido hacer una DLL y llamar desde Excel a la DLL.
He estado haciendo pruebas y no me sale, hago algo mal y no se lo que
es. Es primera vez que utilizo Visual Basic 2005 Express no se si he
creado bien o no la dll.
Los pasos que hago son los siguientes.
Creo nuevo proyecto y elijo Biblioteca de clases.
Le pongo el nombre PruebaDLL
Aparece la primera pestaña llamada Class1.vb donde dejaria este
código:
Public Class Class1
Public Function Saludo() As String
Saludo = "Saludo desde la DLL"
End Function
End Class
Guardo los cambios de este archivo y le doy a Generar PruebaDLL.
Abajo puedo ver que me dice Generación satisfactoria.
Voy a la carpeta C:\Archivos de...\PruebaDLL\bin\Release
y ahí está el archivo PruebaDLL.dll, este lo copia a la carpeta windows
\system32
Voy a Excel y en un módulo normal tengo este código:

Private Declare Function Saludo Lib "PruebaDLL.dll" () As String

Sub Saludame()
Dim Resultado As String

Resultado = Saludo
MsgBox Resultado
End Sub

Al ejecutar esta macro me lanza el siguiente error:

No se puede encotrar el punto de entrada de DLL Saludo en
PruebaDLL.dll

Que estoy haciendo mal?
Todo este tema es para proteger el código de los archivos Excel, hay
alguna otra forma de hacerlo sin utilizar las dll's?
 

Leer las respuestas

#1 Héctor Miguel
18/07/2008 - 00:42 | Informe spam
hola, jose !

"colgaste" la misma pregunta en varios foros de manera indistinta y...
las respuestas que obtengas un alguno NO seran "aprovechadas" por los participantes de "los otros" <\°|°/>

creo que deberas atender a las propuestas que recibas del foro de VB (suena como el idoneo a tu consulta)

otra alternativa es que (hasta donde se) habras de "registrar" tu libreria en cada pc donde vayas a necesitar "llamarla"
no es suficiente "tenerla" en alguna carpeta si no ha sido registrada para comunicacion con las aplicaciones (regsvr32.exe)

saludos,
hector.

__ OP __
Tengo un problema que no consigo solucionar.
Quiero ocultar el código de las macros que utilizo en Excel y sé que es muy facil desproteger el proyecto VBA si está con contraseña
así que se me ha ocurrido hacer una DLL y llamar desde Excel a la DLL.
He estado haciendo pruebas y no me sale, hago algo mal y no se lo que es.
Es primera vez que utilizo Visual Basic 2005 Express no se si he creado bien o no la dll.
Los pasos que hago son los siguientes.
Creo nuevo proyecto y elijo Biblioteca de clases.
Le pongo el nombre PruebaDLL
Aparece la primera pestaña llamada Class1.vb donde dejaria este código:
Public Class Class1
Public Function Saludo() As String
Saludo = "Saludo desde la DLL"
End Function
End Class
Guardo los cambios de este archivo y le doy a Generar PruebaDLL.
Abajo puedo ver que me dice Generación satisfactoria.
Voy a la carpeta C:\Archivos de...\PruebaDLL\bin\Release
y ahí está el archivo PruebaDLL.dll, este lo copia a la carpeta windows\system32
Voy a Excel y en un módulo normal tengo este código:

Private Declare Function Saludo Lib "PruebaDLL.dll" () As String

Sub Saludame()
Dim Resultado As String
Resultado = Saludo
MsgBox Resultado
End Sub

Al ejecutar esta macro me lanza el siguiente error:
No se puede encotrar el punto de entrada de DLL Saludo en PruebaDLL.dll

Que estoy haciendo mal?
Todo este tema es para proteger el código de los archivos Excel, hay alguna otra forma de hacerlo sin utilizar las dll's?

Preguntas similares