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?

Preguntas similare

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?
Respuesta Responder a este mensaje
#2 ~ jose ~
18/07/2008 - 09:51 | Informe spam
Buenas, hector, que tal?

"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" <\°|°/>



Como este mensaje puede ser tema relacionado con varios foros, crei
conveniente postearlo en esos foros así entre uno u otro podría tener
respuesta.

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



Ahora mismo estoy en ello a ver que puedo hacer.

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)



Para esto sería bueno hacer una macro en Excel donde puda registrar la
dll por ejemplo la primera vez que abra el libro Excel.
Me puedes ayudar en esta labor?

Un saludo
jose

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?
Respuesta Responder a este mensaje
#3 Héctor Miguel
19/07/2008 - 03:35 | Informe spam
hola, jose !

Como este mensaje puede ser tema relacionado con varios foros
crei conveniente postearlo en esos foros así entre uno u otro podria tener respuesta.



si consideras una consulta relacionada con dos (no mas de tres) foros...
prueba haciendo un "cross-posting" (varios foros al mismo tiempo)
NO un "multi-posting" (la misma consulta en varios foros de manera indistinta) ;)

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)



Para esto sería bueno hacer una macro en Excel donde puda registrar la dll
por ejemplo la primera vez que abra el libro Excel.
Me puedes ayudar en esta labor?



(creo que) lo que necesitas es una rutina de instalacion generada por un programa instalador (consulta en los foros de VB)
de otra forma, una rutina por vba para comprobar/revisar/instalar/registrar/... librerias podria encontrar "probemillas" :-((
revisa la informacion de las siguientes paginas:

Is Access to the VB Project Allowed?
http://www.j-walk.com/ss/excel/tips/tip96.htm
XL97: How to Programmatically Create a Reference
http://support.microsoft.com/defaul...roduct=xlw
XL2000: How to Programmatically Create a Reference
http://support.microsoft.com/defaul...roduct=xlw

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida