Macro Auto Open

30/05/2005 - 16:31 por Javi | Informe spam
Hola

Perdonad que haga esta consulta, creo haber leido hace tiempo un mensaje
similar pero no lo encuentro.

Quiero que al abrirse un libro se ejecute un código, he probado a poner
en THISWORKBOOK la siguiente macro

Public LibroActivo

Private Sub Workbook_Open()
LibroActivo = ActiveWorkbook.Name
End Sub

pero no funciona, he probado con AutoOpen, pero tampoco va. He leido en
algún sitio de ineternet que hay que hacer que se pueda ejecutar la
macro AutoOpen, pero no entiendo (ni explican cómo hacerlo).

Por otra parte, en esta macro quiero pasar el nombre del libro que se
abre a una variable (es una plantilla yquiero saber el nombre del libro
que se abre), si lo hago como en el ejemplo ¿estará bien hecho? podré
utilizar esa variable desde cualquier otra macro o función.

Muchas gracias

Javi

Preguntas similare

Leer las respuestas

#1 KL
30/05/2005 - 18:10 | Informe spam
Hola Javi,


he probado a poner en THISWORKBOOK la siguiente macro...



La variable publica la tienes que declarar en un Modulo estandar no de clase
como es el de ThisworkBook. Es decir manten el macro donde esta y traslada
la siguiente linea a un modulo estandar, p.ej. Modulo1:

Public LibroActivo As String

he probado con AutoOpen, pero tampoco va.



El nombre del macro en este caso debe poner Auto_Open(), no AutoOpen().
Ademas a diferencia de Workbook_Open que va al modulo de clase de
ThisWorkbook, Auto_Open debe ir a un modulo estandar no de clase.

Por otra parte, en esta macro quiero pasar el nombre del libro que se abre
a una variable (es una plantilla yquiero saber el nombre del libro que se
abre), si lo hago como en el ejemplo ¿estará bien hecho? podré utilizar
esa variable desde cualquier otra macro o función.



Si lo haces tal como te lo indico arriba entonces si estara disponible para
todos los macros.

Saludos,
KL
Respuesta Responder a este mensaje
#2 sanchez.javiNOSPAM
30/05/2005 - 19:22 | Informe spam
Hola KL

Muchas gracias

Javi

KL wrote:

Hola Javi,


> he probado a poner en THISWORKBOOK la siguiente macro...

La variable publica la tienes que declarar en un Modulo estandar no de clase
como es el de ThisworkBook. Es decir manten el macro donde esta y traslada
la siguiente linea a un modulo estandar, p.ej. Modulo1:

Public LibroActivo As String

> he probado con AutoOpen, pero tampoco va.

El nombre del macro en este caso debe poner Auto_Open(), no AutoOpen().
Ademas a diferencia de Workbook_Open que va al modulo de clase de
ThisWorkbook, Auto_Open debe ir a un modulo estandar no de clase.

> Por otra parte, en esta macro quiero pasar el nombre del libro que se abre
> a una variable (es una plantilla yquiero saber el nombre del libro que se
> abre), si lo hago como en el ejemplo ¿estará bien hecho? podré utilizar
> esa variable desde cualquier otra macro o función.

Si lo haces tal como te lo indico arriba entonces si estara disponible para
todos los macros.

Saludos,
KL
Respuesta Responder a este mensaje
#3 javi
31/05/2005 - 17:06 | Informe spam
Hola de nuevo

No me funciona lo de asignar a una variable el nombre del libro.

Al ejecutar la macro Auto_Open funciona bien, pero al salir de la macro,
el valor de la variable se establece a "", y en la inspección me
indica <fueradecontexto>

El código que tengo es:
En ThisWorkbook:
Public Sub Auto_Open()
LibroActivo = ActiveWorkbook.Name
Workbooks(LibroActivo).Sheets("OfertaNUEVA").Activate
ActiveSheet.Range("E3").Select
End Sub
En el módulo 1:
Public LibroActivo As String

Gracias por la ayuda.

Javi

KL escribió:
Hola Javi,



he probado a poner en THISWORKBOOK la siguiente macro...




La variable publica la tienes que declarar en un Modulo estandar no de clase
como es el de ThisworkBook. Es decir manten el macro donde esta y traslada
la siguiente linea a un modulo estandar, p.ej. Modulo1:

Public LibroActivo As String


he probado con AutoOpen, pero tampoco va.




El nombre del macro en este caso debe poner Auto_Open(), no AutoOpen().
Ademas a diferencia de Workbook_Open que va al modulo de clase de
ThisWorkbook, Auto_Open debe ir a un modulo estandar no de clase.


Por otra parte, en esta macro quiero pasar el nombre del libro que se abre
a una variable (es una plantilla yquiero saber el nombre del libro que se
abre), si lo hago como en el ejemplo ¿estará bien hecho? podré utilizar
esa variable desde cualquier otra macro o función.




Si lo haces tal como te lo indico arriba entonces si estara disponible para
todos los macros.

Saludos,
KL


Respuesta Responder a este mensaje
#4 KL
31/05/2005 - 19:20 | Informe spam
Hola Javi,

Tal como te dije en mi mensaje anterior tienes que poner el Auto-Open en el
modulo estandar y NO en el de ThisWorkbook.

Prueba poner lo siguiente en el modulo1 y lanzar primero el Auto_Open y
luego Test.

'--
Public LibroActivo As String

Public Sub Auto_Open()
LibroActivo = ActiveWorkbook.Name
Workbooks(LibroActivo).Sheets("OfertaNUEVA").Activate
ActiveSheet.Range("E3").Select
End Sub

Sub test()
MsgBox LibroActivo
End Sub
'

Saludos,
KL

"javi" wrote in message
news:%
Hola de nuevo

No me funciona lo de asignar a una variable el nombre del libro.

Al ejecutar la macro Auto_Open funciona bien, pero al salir de la macro,
el valor de la variable se establece a "", y en la inspección me indica
<fueradecontexto>

El código que tengo es:
En ThisWorkbook:
Public Sub Auto_Open()
LibroActivo = ActiveWorkbook.Name
Workbooks(LibroActivo).Sheets("OfertaNUEVA").Activate
ActiveSheet.Range("E3").Select
End Sub
En el módulo 1:
Public LibroActivo As String

Gracias por la ayuda.

Javi

KL escribió:
Hola Javi,



he probado a poner en THISWORKBOOK la siguiente macro...




La variable publica la tienes que declarar en un Modulo estandar no de
clase como es el de ThisworkBook. Es decir manten el macro donde esta y
traslada la siguiente linea a un modulo estandar, p.ej. Modulo1:

Public LibroActivo As String


he probado con AutoOpen, pero tampoco va.




El nombre del macro en este caso debe poner Auto_Open(), no AutoOpen().
Ademas a diferencia de Workbook_Open que va al modulo de clase de
ThisWorkbook, Auto_Open debe ir a un modulo estandar no de clase.


Por otra parte, en esta macro quiero pasar el nombre del libro que se
abre a una variable (es una plantilla yquiero saber el nombre del libro
que se abre), si lo hago como en el ejemplo ¿estará bien hecho? podré
utilizar esa variable desde cualquier otra macro o función.




Si lo haces tal como te lo indico arriba entonces si estara disponible
para todos los macros.

Saludos,
KL

Respuesta Responder a este mensaje
#5 Javi
01/06/2005 - 00:24 | Informe spam
Hola KL

Gracias por las respuestas; no sé qué hago mal, inicialemnte lo puse en
el módulo1, tal como me indicabas, pero cuando sale de ejecutar
Auto_Open se queda vacía la variable LibroActivo, por eso volví a probar
en ThisWorkbook.

Voy a revisarlo de nuevo a ver qué hago mal.

Muchas gracias

Javi

KL escribió:
Hola Javi,

Tal como te dije en mi mensaje anterior tienes que poner el Auto-Open en el
modulo estandar y NO en el de ThisWorkbook.

Prueba poner lo siguiente en el modulo1 y lanzar primero el Auto_Open y
luego Test.

'--
Public LibroActivo As String

Public Sub Auto_Open()
LibroActivo = ActiveWorkbook.Name
Workbooks(LibroActivo).Sheets("OfertaNUEVA").Activate
ActiveSheet.Range("E3").Select
End Sub

Sub test()
MsgBox LibroActivo
End Sub
'

Saludos,
KL

"javi" wrote in message
news:%

Hola de nuevo

No me funciona lo de asignar a una variable el nombre del libro.

Al ejecutar la macro Auto_Open funciona bien, pero al salir de la macro,
el valor de la variable se establece a "", y en la inspección me indica
<fueradecontexto>

El código que tengo es:
En ThisWorkbook:
Public Sub Auto_Open()
LibroActivo = ActiveWorkbook.Name
Workbooks(LibroActivo).Sheets("OfertaNUEVA").Activate
ActiveSheet.Range("E3").Select
End Sub
En el módulo 1:
Public LibroActivo As String

Gracias por la ayuda.

Javi

KL escribió:

Hola Javi,




he probado a poner en THISWORKBOOK la siguiente macro...




La variable publica la tienes que declarar en un Modulo estandar no de
clase como es el de ThisworkBook. Es decir manten el macro donde esta y
traslada la siguiente linea a un modulo estandar, p.ej. Modulo1:

Public LibroActivo As String



he probado con AutoOpen, pero tampoco va.




El nombre del macro en este caso debe poner Auto_Open(), no AutoOpen().
Ademas a diferencia de Workbook_Open que va al modulo de clase de
ThisWorkbook, Auto_Open debe ir a un modulo estandar no de clase.



Por otra parte, en esta macro quiero pasar el nombre del libro que se
abre a una variable (es una plantilla yquiero saber el nombre del libro
que se abre), si lo hago como en el ejemplo ¿estará bien hecho? podré
utilizar esa variable desde cualquier otra macro o función.




Si lo haces tal como te lo indico arriba entonces si estara disponible
para todos los macros.

Saludos,
KL







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