Macro: Abrir libro y/o saltar cuando este abierto

15/11/2006 - 21:36 por CARLOS CARNERO | Informe spam
Muy buenas a todos, una consulta: Les agradecería atender mi
solicitud, porque necesito usar el mismo botón (ej: Botón6) para
ejecutar una macro, tanto cuando esten los dos ó más libros abiertos
para saltar de un libro a otro, ó como en el caso que no estuviera
abierto, este comando ejecutará en ese momento la apertura de este
segundo libro.

Tengo estas dos sintaxis por separado: Necesito unificarla para que sea
condicional como lo expuesto ó como cuando se usa la condicional en
fórmulas (=Si):

1) Este es el caso cuando los dos libros estan abiertos y se realiza el
salto:

Sub Botón6_AlHacerClic()
'
' Botón6_AlHacerClic Macro
' Macro grabada el 4/06/2005 por Departamento de Sistemas
'

'
Windows("SOLICITUD.xls").Activate
End Sub

2) En el caso que el otro libro no este abierto:

ChDir "C:\Carlos\Proyecto POEH\Proyecto Alcanfores\FERROCARRIL"
Workbooks.Open FileName:= _
"C:\Carlos\Proyecto POEH\Proyecto
Alcanfores\FERROCARRIL\DATA.xls" _
, UpdateLinks:=0
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
16/11/2006 - 03:37 | Informe spam
hola, Carlos !

un ejemplo 'practico' [por sencillo] pudiera ser +/- como el siguiente [para cuando no este abierto el otro libro]...

' [otras lineas de tu codigo] ... '
On Error Resume Next
Tmp = Workbooks("mi otro libro.xls").Name
If Err <> 0 Then Workbooks.Open "c:uta y\carpetas donde esta\mi otro libro.xls"
On Error GoTo 0
' [otras lineas de tu codigo] ... '

en caso de que 'mi otro libro' estuviera cerrado... lo abre ->y lo deja como activo<- <= OJO
si necesitas que el libro 'activo' siga siendo el que contiene la macro en ejecucion... modifica a...
If Err <> 0 Then Workbooks.Open _
"c:uta y\carpetas donde esta\mi otro libro.xls": ThisWorkbook.Activate

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.

__ la consulta original __
... para ejecutar una macro, tanto cuando esten los dos o más libros abiertos para saltar de un libro a otro
o como en el caso que no estuviera abierto, este comando ejecutara en ese momento la apertura de este segundo libro.
Tengo estas dos sintaxis por separado: Necesito unificarla para que sea condicional como lo expuesto ...
1) Este es el caso cuando los dos libros estan abiertos y se realiza el salto:
Sub Botón6_AlHacerClic()
Windows("SOLICITUD.xls").Activate
End Sub
2) En el caso que el otro libro no este abierto:

ChDir "C:\Carlos\Proyecto POEH\Proyecto Alcanfores\FERROCARRIL"
Workbooks.Open FileName:= _
"C:\Carlos\Proyecto POEH\Proyecto Alcanfores\FERROCARRIL\DATA.xls" _
, UpdateLinks:=0
End Sub
Respuesta Responder a este mensaje
#2 CARLOS CARNERO
17/11/2006 - 00:07 | Informe spam
Hola Hector un gusto en saludarte y agradecerte una vez más tu gentil
atención:

Al parecer hay algo que esto haciendo mal, y no lo encuentro. Para
hacerlo más facil para mí, he creado dos nuevos libros vacios, sólo
para aplicar estas sintaxis: uno "formulario.xls" y el otro "DATA DE
FORMULARIO.xls", siendo este último el activo para aplicar las macros.

Esta es la sintaxis que aplicado, pero me sale esta ventana de error:
"Se ha producido el error '9' en tiempo de ejecución: El subíndice
está fuera del intervarlo", y cuando ejecuto depurados me sombrea en
amarillo: "Tmp = Workbooks("Formulario.xls").Name"



Sub Objeto2_AlHacerClic()
'
' Objeto2_AlHacerClic Macro
' Macro grabada el 16/11/2006 por
'

' On Error Resume Next
Tmp = Workbooks("Formulario.xls").Hoja1
If Err <> 0 Then Workbooks.Open "c:\a\Formulario.xls"
On Error GoTo 0
End Sub




Saludos desde el Perú,

Carlos Carnero Gálvez
Respuesta Responder a este mensaje
#3 Héctor Miguel
17/11/2006 - 02:51 | Informe spam
hola, Carlos !

Al parecer hay algo que esto haciendo mal, y no lo encuentro
Esta es la sintaxis que aplicado, pero me sale esta ventana de error:
"Se ha producido el error '9' en tiempo de ejecucion: El subindice esta fuera del intervarlo"
y cuando ejecuto depurados me sombrea en amarillo: "Tmp = Workbooks("Formulario.xls").Name"
Sub Objeto2_AlHacerClic()
' Objeto2_AlHacerClic Macro
' Macro grabada el 16/11/2006 por
' On Error Resume Next
Tmp = Workbooks("Formulario.xls").Hoja1
If Err <> 0 Then Workbooks.Open "c:\a\Formulario.xls"
On Error GoTo 0
End Sub



-> 'nota' que la linea que 'controla/omite/permite/maneja/...' los errores que pudieran presentarse
la tienes con una marca de comentario [un apostrofo al inicio de la linea] -( -> elimina el apostrofo y cambia...
de: -> ' On Error Resume Next
a: -> On Error Resume Next

saludos,
hector.
Respuesta Responder a este mensaje
#4 CARLOS CARNERO
17/11/2006 - 16:36 | Informe spam
Hola Héctor: He corregido la sintaxis tal como me los has explicado y
funciona para aperturar el otro libro, pero cuando ya esta abierto aún
no cumple el salto de libro con este misma macro.

Esta es la sintaxis corregida:

Sub Objeto2_AlHacerClic()
'
' Objeto2_AlHacerClic Macro
' Macro grabada el 16/11/2006 por
'

On Error Resume Next
Tmp = Workbooks("Formulario.xls").Name
If Err <> 0 Then Workbooks.Open FileName:="C:\a\Formulario.xls"
On Error GoTo 0
End Sub


Lo que no comprendo, es como puedo combinar estas dos fracciones de
sintaxis (sí con ello cumplo el segundo objetivo)

1) On Error GoTo 0
2) : ThisWorkbook.Activate

Una vez más muchas gracias por tu atención.

Carlos
Respuesta Responder a este mensaje
#5 Tux
17/11/2006 - 18:20 | Informe spam
CARLOS CARNERO escribió:
Hola Héctor: He corregido la sintaxis tal como me los has explicado y
funciona para aperturar el otro libro, pero cuando ya esta abierto aún
no cumple el salto de libro con este misma macro.

Esta es la sintaxis corregida:

Sub Objeto2_AlHacerClic()
'
' Objeto2_AlHacerClic Macro
' Macro grabada el 16/11/2006 por
'

On Error Resume Next
Tmp = Workbooks("Formulario.xls").Name
If Err <> 0 Then Workbooks.Open FileName:="C:\a\Formulario.xls"
On Error GoTo 0
End Sub


Lo que no comprendo, es como puedo combinar estas dos fracciones de
sintaxis (sí con ello cumplo el segundo objetivo)

1) On Error GoTo 0
2) : ThisWorkbook.Activate

Una vez más muchas gracias por tu atención.

Carlos




Hola Carlos :-)

Pues puedes poner el Thisworbook.Activate asi:

Sub Objeto2_AlHacerClic()
'
' Objeto2_AlHacerClic Macro
' Macro grabada el 16/11/2006 por
'

On Error Resume Next
Tmp = Workbooks("Libro2.xls").Hoja1
If Err <> 0 Then Workbooks.Open "c:\documents and
settings\usuario\Escritorio\Libro2.xls"
On Error GoTo 0
ThisWorkbook.Activate

End Sub


Nos comentas ok? :-P

¡Un SAludo! :-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida