Ejecutar función en Libro Personal

01/02/2006 - 01:55 por Jairo Marin | Informe spam
Hola Grupo.
Escribí una función que hace recibe como parámetro una sentencia SQL y
retorna la respuesta a la consulta como
una cadena de carácteres, la guarde como función publica en un módulo en el
libro personal, la función dentro del libro personal funciona bien, pero
cuando intento utilizar la función dentro de otro libro, no funciona, no la
reconoce, es como si el ambito no alcanzara. Y es eso lo que deseo, colocar
en un sitio, funciones publicas que pueda llamar desde cualquier libro en mi
computador
... Si se puede hacer esto?
que error de lógica tuve?

Muchas gracias por los comentarios grupo.

Jairo Marin
www.jmingenieria.com

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
01/02/2006 - 06:51 | Informe spam
hola, Jairo !

Escribi una funcion que... recibe como parametro una sentencia SQL y retorna la respuesta... una cadena de caracteres
la guarde como funcion publica en un modulo en el libro personal
... dentro del libro personal funciona bien, pero... dentro de otro libro, no funciona, no la reconoce, es como si el ambito no alcanzara...
... Si se puede hacer esto?
que error de logica tuve?



asi ?... sin 'ver' el codigo ??? las -posibles- causas pudieran ser... 'n'
[p.e. referencias a ThisWorkbook... etc.]

comentas algun detalle mas... 'significativo' ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Jairo Marin
02/02/2006 - 00:25 | Informe spam
Hola Hector. El código es el siguiente.. esta en un modulo del libro
personal... y quiero que ésta funcion sea visible y utilizabel como
cualquier funcion nativa del excel para CUALQUIER libro...

Public Function JSQl(T As String) As Variant
On Error GoTo Salir:
' JSQl Macro
' Macro grabada el 16/01/2006 por jairo.marin
Dim GCon As New ADODB.Connection

Dim Aux As New ADODB.Recordset
GCon.Open "Provider=MSDAORA;Data Source=SIC;User Id =jymarin;
Password=estaeslacontraseña;"
Aux.Open T, GCon, adOpenDynamic
If Aux.EOF = False Then
JSQl = Aux(0) & ""
Else
JSQl = ""
End If
Aux.Close

Set Aux = Nothing

GCon.Close
Set GCon = Nothing

Salir:
If Aux.State = adStateOpen Then
Aux.Close
Set Aux = Nothing
End If
If GCon.State = adStateOpen Then
GCon.Close
Set GCon = Nothing
End If
End Function




"Héctor Miguel" escribió en el mensaje
news:
hola, Jairo !

Escribi una funcion que... recibe como parametro una sentencia SQL y
retorna la respuesta... una cadena de caracteres
la guarde como funcion publica en un modulo en el libro personal
... dentro del libro personal funciona bien, pero... dentro de otro
libro, no funciona, no la reconoce, es como si el ambito no alcanzara...
... Si se puede hacer esto?
que error de logica tuve?



asi ?... sin 'ver' el codigo ??? las -posibles- causas pudieran
ser... 'n'
[p.e. referencias a ThisWorkbook... etc.]

comentas algun detalle mas... 'significativo' ?
saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
02/02/2006 - 06:38 | Informe spam
hola, Jairo !

El codigo... esta en un modulo del libro personal...
y quiero que esta funcion sea visible y utilizabel como cualquier funcion nativa del excel para CUALQUIER libro...
[sigue codigo con 'la funcion']...



1) 're-tomando' [algunos] puntos de tu mensaje original... comentabas que:
'...recibe como parametro una sentencia SQL y retorna la respuesta... una cadena de caracteres...'
'...dentro del libro personal funciona bien... dentro de otro libro, no funciona, no la reconoce, es como si el ambito no alcanzara...'
2) y agregando lo que en este mensaje comentas de:
'...que esta funcion sea visible y utilizabel como cualquier funcion nativa del excel para CUALQUIER libro...'
-> con base en estos 2 comentarios, me queda la duda de si vas a utilizar tu funcion personalizada...
a) como funciones 'nativas' EN celdas/hojas/libros [funciones de hoja de calculo como: =buscarv(... etc.]
b) como funciones 'nativas' [VBA] EN modulos de codigo desde otros libros [por lo del 'ambito que no alcanza']
c) 'ambas dos a la par que juntas' :DD -?-

3) serviria si comentas 'bajo que condiciones' [o forma de uso] es que 'no funciona' -> fuera del libro personal.xls...
-> suponiendo que usas EL MISMO argumento 'T' que recibe la funcion -?-
o... si comentas 'que error' es el que recibes... que linea/s se marca con error... [o algun detalle de ese tipo] ;)

4) la primera 'instruccion' en el codigo que expones de la funcion 'dice'... -> On Error GoTo Salir:
-> NOTA que 'termina' con dos puntos ':' -?- es 'correcto' ? [o se trato de un error 'tipografico' al exponerla en el foro] -?-

comentas 'por donde' empezamos a buscar -posibles- 'causas' de error ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Jairo Marin
04/02/2006 - 00:00 | Informe spam
Hola miguel. Gracias.

Eso!!! La quiero usar como si fuera una funcion como BuscarV, pero en
CUALQUIER libro que yo abra...
por ejemplo:

CeldaA1= JSQl ("Select campo from Tabla Where Condicion")

Y en A1 me de el resultado. Pero que lo pueda hacer en cualquier libro...

Nota: los dos puntos fue un error tipografico.

GRACIAS MUCHACHOS.



"Héctor Miguel" escribió en el mensaje
news:
hola, Jairo !

El codigo... esta en un modulo del libro personal...
y quiero que esta funcion sea visible y utilizabel como cualquier funcion
nativa del excel para CUALQUIER libro...
[sigue codigo con 'la funcion']...



1) 're-tomando' [algunos] puntos de tu mensaje original... comentabas que:
'...recibe como parametro una sentencia SQL y retorna la respuesta...
una cadena de caracteres...'
'...dentro del libro personal funciona bien... dentro de otro libro, no
funciona, no la reconoce, es como si el ambito no alcanzara...'
2) y agregando lo que en este mensaje comentas de:
'...que esta funcion sea visible y utilizabel como cualquier funcion
nativa del excel para CUALQUIER libro...'
-> con base en estos 2 comentarios, me queda la duda de si vas a utilizar
tu funcion personalizada...
a) como funciones 'nativas' EN celdas/hojas/libros [funciones de hoja
de calculo como: =buscarv(... etc.]
b) como funciones 'nativas' [VBA] EN modulos de codigo desde otros
libros [por lo del 'ambito que no alcanza']
c) 'ambas dos a la par que juntas' :DD -?-

3) serviria si comentas 'bajo que condiciones' [o forma de uso] es que 'no
funciona' -> fuera del libro personal.xls...
-> suponiendo que usas EL MISMO argumento 'T' que recibe la
cion -?-
o... si comentas 'que error' es el que recibes... que linea/s se marca
con error... [o algun detalle de ese tipo] ;)

4) la primera 'instruccion' en el codigo que expones de la funcion
'dice'... -> On Error GoTo Salir:
-> NOTA que 'termina' con dos puntos ':' -?- es 'correcto' ? [o
se trato de un error 'tipografico' al exponerla en el foro] -?-

comentas 'por donde' empezamos a buscar -posibles- 'causas' de error ?
saludos,
hector.

Respuesta Responder a este mensaje
#5 Héctor Miguel
04/02/2006 - 07:27 | Informe spam
hola, Jairo !

Eso!!! La quiero usar como si fuera una funcion como BuscarV, pero en CUALQUIER libro que yo abra...
por ejemplo: CeldaA1= JSQl ("Select campo from Tabla Where Condicion")
Y en A1 me de el resultado. Pero que lo pueda hacer en cualquier libro...



1) despues de hacer varias 'pruebas' creando funciones personalizadas similares a la que expones...
[creando consultas a bases de datos y devolviendo el primer campo/registro 'encontrado' -si existe-]...
y 'llamandolas' desde algunas celdas en hojas de calculo [tanto en su mismo libro como en 'cualquiera' otro]...
y TODAS las pruebas SIN 'errores' ;)

2) p.e. cuando 'llamas' a funciones personalizadas, cuyo codigo se encuentra en un libro 'distinto' [como el 'personal.xls']...
a) si usas el 'asistente' para funciones... NOTA que la funcion 'seleccionada' va precedida por el nombre del libro ;)
b) si usas la formula 'directamente' en celdas -> desde otro libro [SIN su libro 'pariente' o contenedor del codigo]...
el resultado que obtendrias es el valor de error: -> #¿NOMBRE? [o... #NAME? si tu excel es en ingles] :))
es decir... si NO le indicas cual es el libro que contiene el codigo... excel NO va a 'reconocer' dicha funcion :-((
c) si quieres 'evitarte' el tener que anteponer el nombre del libro [personal.xls]...
considera 'convertir' [algunos procedimientos del personal.xls] a complementos de excel [*.XLA] :))
[de todas formas]... en ambos casos [personal o complemento] 'tendrias que' andar cargando con los codigos :-(

3) 'necesito' [volver a] 'preguntarte' algunos 'detalles' del error que 'obtienes' de acuerdo al punto 3 del mensaje anterior:
3) serviria si comentas 'bajo que condiciones' [o forma de uso] es que 'no funciona' -> fuera del libro personal.xls...
-> suponiendo que usas EL MISMO argumento 'T' que recibe la funcion -?-
o... si comentas 'que error' es el que recibes... que linea/s se marca/n con error... [o algun detalle de ese tipo] ;)





4) te comento que las pruebas [obviamente] NO las realice hacia una base de datos de oracle :))
aunque... la cadena de conexion que usas, a traves del proveedor OLE DB de Misrosoft para Oracle... es la 'aceduada' ;)

comentas [si encuentras] algun detalle mas... 'significativo' ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida