VBA. Ocultar funciones de la PERSONAL.XLS

02/06/2005 - 13:40 por Luis Garcia | Informe spam
Hola a todos:

Tengo un fichero .XLS que se abre automaticamente al abrir Excel 2000
(en el directorio de inicio, XLSTART).

Dentro de este fichero tengo muchos módulos, formularios, etc... que hacen
utilidades y 'cosas mias', con su barra de herramientas personalizada, etc.
Instalo (copio) este fichero a diferentes usuarios y entonces tienen acceso
a las nuevas utilidades que yo he creado, peeero (como siempre, hay algo):

Cuando le dan a Ejecutar|Macros, salen todas las PUBLIC SUBs de mi fichero,
y si insertan funciones personalizadas, salen todas las PUBLIC FUNCTIONs
también.

Poniendo la propiedad 'IsAddin = True' del Woorkbook, evito que se muestren
todas las SUBs en Ejecutar|Macros, pero las funciones se siguen mostrando.

¿Como poder evitar esto? Porque, ademas :-), me gustaria poder definir que
SUBs y/o FUNCTIONs quiero 'exponer' o no. Una especie de FRIEND function
dentro de un módulo BAS.

Veo todo muy complicado para algo tan sencillo, asi que seguro que me
estoy liando en algun sitio y no lo veo :-).
Cualquier sugerencia sera bienvenida, gracias.

Saludos

PD:
Lo unico que se me ocurre seria crear un .xls/.xla con IsAddin = True con
las SUB/FUNCTION públicas para todo el mundo, y en otro fichero
.xls mis cosas privadas que podrian aprovecha las funciones del anterior
.xls/.xla, pero el problema persistiria: En el momento que cree una funcion
PUBLICA en mi proyecto particular, esta se 'expone' al Excel, cosa que yo no
quiero.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
02/06/2005 - 16:01 | Informe spam
Si declaras los módulos y funciones como Private, no aparecerán ni en la lista de macros ni en la de funciones personalizadas. Por ejemplo:

Private Function NoSeVe()

End Function


Un saludo.


Fernando Arroyo
MS MVP - Excel


"Luis Garcia" escribió en el mensaje news:%
Hola a todos:

Tengo un fichero .XLS que se abre automaticamente al abrir Excel 2000
(en el directorio de inicio, XLSTART).

Dentro de este fichero tengo muchos módulos, formularios, etc... que hacen
utilidades y 'cosas mias', con su barra de herramientas personalizada, etc.
Instalo (copio) este fichero a diferentes usuarios y entonces tienen acceso
a las nuevas utilidades que yo he creado, peeero (como siempre, hay algo):

Cuando le dan a Ejecutar|Macros, salen todas las PUBLIC SUBs de mi fichero,
y si insertan funciones personalizadas, salen todas las PUBLIC FUNCTIONs
también.

Poniendo la propiedad 'IsAddin = True' del Woorkbook, evito que se muestren
todas las SUBs en Ejecutar|Macros, pero las funciones se siguen mostrando.

¿Como poder evitar esto? Porque, ademas :-), me gustaria poder definir que
SUBs y/o FUNCTIONs quiero 'exponer' o no. Una especie de FRIEND function
dentro de un módulo BAS.

Veo todo muy complicado para algo tan sencillo, asi que seguro que me
estoy liando en algun sitio y no lo veo :-).
Cualquier sugerencia sera bienvenida, gracias.

Saludos

PD:
Lo unico que se me ocurre seria crear un .xls/.xla con IsAddin = True con
las SUB/FUNCTION públicas para todo el mundo, y en otro fichero
.xls mis cosas privadas que podrian aprovecha las funciones del anterior
.xls/.xla, pero el problema persistiria: En el momento que cree una funcion
PUBLICA en mi proyecto particular, esta se 'expone' al Excel, cosa que yo no
quiero.


Respuesta Responder a este mensaje
#2 Carlos Durán Urenda
02/06/2005 - 16:54 | Informe spam
Hola Luis

Yo utilizo Excel 2002 (XP), ya hasta donde sé solo existen los modificadores
de ambito a nivel de funcion / procedimiento Public y Private

Posiblemente en Excel 2003, que se supone es mas compatible con la
tecnología .Net, se incorpore el modificador Shadows que oculta miembros
publicos de manera que pueden ser accesibles desde otros lugares de la
aplicacion pero no aparecen en la lista de miembros del objeto. lo cierto es
que no estoy seguro de eso.


Lo correcto es que pusieras tus funciones o procediemientos como Private,
pero posiblemente quieras llamarlos desde otro modulo, lo cual no podrias
hacer


otra solucion que acabo de encontrar es incluir la instruccion

Option Private Module

en la cabecera del modulo que contiene tus funciones o procedimientos que
quieres ocultar, podras llamarlos desde otros moludos o formularios y no
apareceran en la ventana de macros ni en la de funciones


Ejemplo


En el Módulo1 pondrias


Option Private Module

Sub Prueba
MsgBox "Esta es una prueba"
end sub




Desde el Módulo2

Sub Prueba2
Call Módulo1.Prueba
End Sub




Al entrar a Herramientas/Macros /Ejectuar

Solo aparecera Prueba2



Saludos
Carlos Durán










"Luis Garcia" escribió en el mensaje
news:%
Hola a todos:

Tengo un fichero .XLS que se abre automaticamente al abrir Excel 2000
(en el directorio de inicio, XLSTART).

Dentro de este fichero tengo muchos módulos, formularios, etc... que hacen
utilidades y 'cosas mias', con su barra de herramientas personalizada,
etc.
Instalo (copio) este fichero a diferentes usuarios y entonces tienen
acceso
a las nuevas utilidades que yo he creado, peeero (como siempre, hay algo):

Cuando le dan a Ejecutar|Macros, salen todas las PUBLIC SUBs de mi
fichero,
y si insertan funciones personalizadas, salen todas las PUBLIC FUNCTIONs
también.

Poniendo la propiedad 'IsAddin = True' del Woorkbook, evito que se
muestren
todas las SUBs en Ejecutar|Macros, pero las funciones se siguen mostrando.

¿Como poder evitar esto? Porque, ademas :-), me gustaria poder definir que
SUBs y/o FUNCTIONs quiero 'exponer' o no. Una especie de FRIEND function
dentro de un módulo BAS.

Veo todo muy complicado para algo tan sencillo, asi que seguro que me
estoy liando en algun sitio y no lo veo :-).
Cualquier sugerencia sera bienvenida, gracias.

Saludos

PD:
Lo unico que se me ocurre seria crear un .xls/.xla con IsAddin = True con
las SUB/FUNCTION públicas para todo el mundo, y en otro fichero
.xls mis cosas privadas que podrian aprovecha las funciones del anterior
.xls/.xla, pero el problema persistiria: En el momento que cree una
funcion
PUBLICA en mi proyecto particular, esta se 'expone' al Excel, cosa que yo
no
quiero.


Respuesta Responder a este mensaje
#3 Luis Garcia
02/06/2005 - 17:33 | Informe spam
"Carlos Durán Urenda" escribió en...
Hola Luis

Yo utilizo Excel 2002 (XP), ya hasta donde sé solo existen los


modificadores
de ambito a nivel de funcion / procedimiento Public y Private

Posiblemente en Excel 2003, que se supone es mas compatible con la
tecnología .Net, se incorpore el modificador Shadows que oculta miembros
publicos de manera que pueden ser accesibles desde otros lugares de la
aplicacion pero no aparecen en la lista de miembros del objeto. lo cierto
es que no estoy seguro de eso.

Lo correcto es que pusieras tus funciones o procediemientos como Private,
pero posiblemente quieras llamarlos desde otro modulo, lo cual no podrias
hacer



Exacto, yo tengo modulos BAS con funciones 'de utilidades' y quiero usarlas
en mi proyecto pero que no salgan en las funciones personalizadas de Excel.

otra solucion que acabo de encontrar es incluir la instruccion

Option Private Module

en la cabecera del modulo que contiene tus funciones o procedimientos que
quieres ocultar, podras llamarlos desde otros moludos o formularios y no
apareceran en la ventana de macros ni en la de funciones
[... ]
Saludos
Carlos Durán



Perfecto!!! Esta es la solucion que necesitaba!!! Muchas Gracias!!!
Ya decia yo que me estaba liando demasiado... aunque un poco escondido si
que estaba :-))) Muchas gracias otra vez.

Saludos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida