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

#6 Héctor Miguel
17/11/2006 - 18:54 | Informe spam
hola, Carlos !

... funciona para aperturar el otro libro, pero cuando ya esta abierto aun no cumple el salto de libro con este misma macro.
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 [...]



la 'sintaxis' de la segunda propuesta de la primer respuesta que decia...
If Err <> 0 Then Workbooks.Open _
"c:uta y\carpetas donde esta\mi otro libro.xls": ThisWorkbook.Activate

es el equivalente [en una sola linea] de:
If Err <> 0 Then Workbooks.Open "c:uta y\carpetas donde esta\mi otro libro.xls": ThisWorkbook.Activate

lo cual a su vez es equivalente [en varias lineas 'respetando' la estructura de un bloque If...Then...End If] de:
If Err <> 0 Then
Workbooks.Open "c:uta y\carpetas donde esta\mi otro libro.xls"
ThisWorkbook.Activate
End If

-> nota: en lenguaje vba se puede indicar un salto de linea usando dos puntos seguidos de un espacio
asi como una continuacion de linea usando un espacio y un guion_bajo [indica que la siguiente linea es... 'la misma'] ;)

saludos,
hector.
Respuesta Responder a este mensaje
#7 CARLOS CARNERO
17/11/2006 - 19:02 | Informe spam
Tux y Héctor mil gracias por su apoyo:

Efectivamente la última pista de Tux complemento la grandiosa ayuda de
Héctor, ya que tuve que reemplazar para este caso el
ThisWorkbook.Activate por Windows("Formulario.xls").Activate y ahora si
funciona muy bien:

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 FileName:="C:\a\Formulario.xls"
On Error GoTo 0
Windows("Formulario.xls").Activate
End Sub

Una vez muchas gracias a los dos.

Saludos desde el Perú,

Carlos Carnero Gálvez
Respuesta Responder a este mensaje
#8 Tux
17/11/2006 - 19:14 | Informe spam
CARLOS CARNERO escribió:
Tux y Héctor mil gracias por su apoyo:

Efectivamente la última pista de Tux complemento la grandiosa ayuda de
Héctor, ya que tuve que reemplazar para este caso el
ThisWorkbook.Activate por Windows("Formulario.xls").Activate y ahora si
funciona muy bien:

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 FileName:="C:\a\Formulario.xls"
On Error GoTo 0
Windows("Formulario.xls").Activate
End Sub

Una vez muchas gracias a los dos.

Saludos desde el Perú,

Carlos Carnero Gálvez




Gracias a ti Carlos y sobre todo, sobre todo las gracias a Hector ;-)

¡Un SAludo! :-)

www.fermu.com
www.zorval.es
Respuesta Responder a este mensaje
#9 CARLOS CARNERO
20/11/2006 - 21:17 | Informe spam
Una consulta Héctor: Esta sintaxis es aplicable al primer libro ó
libro maestro, pero: ¿Es posible que opere de de manera viceversa (en
referencia al vinculo del segundo libro) a la vez?

Gracias y saludos,

Carlos Carnero Gálvez
Respuesta Responder a este mensaje
#10 Héctor Miguel
20/11/2006 - 21:40 | Informe spam
hola, Carlos !

Esta sintaxis es aplicable al primer libro o libro maestro, pero:
Es posible que opere de de manera viceversa (en referencia al vinculo del segundo libro) a la vez?



el ejemplo ha sido para que luego de ser necesario abrir otro libro [que por omision se queda como 'activo']..
-> 'volver' al libro que contiene la macro, por la palabra clave: -> ThisWorkbook [que es referencia al que contiene la macro]

si necesitas que NO sea el libro que contiene las macros, sino 'cualquiera' otro que pudiera estar como 'activo'...
-> prueba definiendo una variable que 'capture' el nombre del libro activo [en ese momento] y regrese 'a donde mismo' [p.e.]

Dim VolverA As String
VolverA = ActiveWorkbook.Name
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"
Workbooks(VolverA).Activate
End If
On Error GoTo 0

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida