Public sub VBA

10/10/2003 - 23:50 por MRGT | Informe spam
Hola,
He leido en la ayuda de VBA que cuando a una sub() dentro de un módulo se le
antepone el prefijo 'Public' entonces su código está disponible para el
resto de los módulos, o sea es lo contrario que el prefijo 'Private' que
restringe el código solo a las rutinas dentro del módulo al que pertenezca
la sub(). Bueno pues el prefijo 'Private' si que me funciona, sin embargo
cuando antepongo el prefijo 'Public' no tengo el código de esa sub()
disponible para el resto de los módulos de otros proyectos; si que está
disponible para otros módulos del mismo proyecto, pero para eso no es
necesario el prefijo 'Public' pues aún sin él si lo están.
¿Sabe alguien cómo hacer que esto funcione como debe? es decir disponer del
código de una sub() de un proyecto (libro) para que pueda llamarse desde una
rutina contenida en otro proyecto (libro). Desde luego que estando con un
libro activo no tengo problemas en ejecutar subrutinas contenidas en módulos
de otros proyectos o libros, el problema es desde el módulo de un proyecto
llamar a sub's() de otro.
Saludos
Martín RG
 

Leer las respuestas

#1 Héctor Miguel
11/10/2003 - 01:36 | Informe spam
Hola, Martin !

... en la ayuda de VBA ... una sub() ... 'Public' ... esta disponible para el resto de los modulos [contrario 'Private'] ...
... 'Private' si que me funciona, sin embargo ... 'Public' no tengo el codigo de esa sub() ... para ... otros proyectos ...



==> 'Public' es el prefijo 'por omision' para un procedimiento [sub o funcion] =>no es necesario 'especificarlo'< y [hasta donde yo se] existen 3 maneras de 'ejecutar' un procedimiento [sub o funcion] 'desde otro' libro
1.- haciendo referencias al proyecto en el editor de VBA
2.- usando el metodo => Application.Run "X:\Directorio\Libro.xls!Macro_o_Funcion [Parametros...]"
3.- si 'solamente' se requiere llamar a funciones 'personalizadas' en hojas de calculo...
teniendolas 'disponibles', ya sea en algun complemento [xla] o en el libro de macros 'Personal.xls'

en todos los casos, el libro 'que contiene' el procedimiento 'necesita' estar abierto [o 'disponible']
en caso contrario, al ejecutar 'su' procedimiento [desde el otro libro]... SE ABRIRA

OJO con la opcion # 2... si la ruta y/o el nombre del libro contiene 'espacios intermedios' [o 'solo' numeros]...
la ruta completa (hasta ANTES del signo '!') DEBERA 'ir entre' comillas simples [apostrofos], p.e.:
Application.Run "'C:\Mis documentos\Mi Libro.xls'!Macro_o_Funcion [Parametros_si_necesarios...]"

Saludos,
Héctor.

Preguntas similares