No abrir libro si ya esta abierto

Una consulta, tengo el siguiente código que gracias a uno de los experto de esta web tan buenisimaaa pude adaptarlo a mi necesidad

Este es el código

Private Sub BotonOK_Click()
If Psw <> "JMP" Then
MsgBox "Clave Incorrecta" & vbNewLine & "El programa se cerrará", 64, ""
Application.DisplayAlerts = False
ThisWorkbook.Close False
Application.DisplayAlerts = True
Else
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"
End
End If
Windows("prueba").Activate
Range("A1").Select
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub

Este código abre los libros buscarhoja1 y buscarhoja2, , mi consulta es que si uno y/o los dos libros ya este abierto no lo vuelva a abrir, que ignore la solicitud.,

Gracias

jesús martinez

1 Respuesta

Respuesta
1

'4c7569735f50

Reemplaza estas lineas

Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"

por estas

If Windows("buscarhoja1.xls").Visible = False Then Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
If Windows("buscarhoja2.xls").Visible = False Then Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"

hola sale un mensaje que dice se ha producido el error '9' en tiempo de ejecucion

Sub indice fuera del intervalo

Gracias

jesús

Entonces ponlo asi:

on error resume next

Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"

Disculpa o sea pondría asi:

If Windows("buscarhoja1.xls").Visible = False Then Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
If Windows("buscarhoja2.xls").Visible = False Then Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"

on error resume next
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"

Gracias

Jesus

Private Sub BotonOK_Click()
If Psw <> "JMP" Then
MsgBox "Clave Incorrecta" & vbNewLine & "El programa se cerrará", 64, ""
Application.DisplayAlerts = False
ThisWorkbook.Close False
Application.DisplayAlerts = True
Else
on error resume next
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja1.xls"
Workbooks.Open ThisWorkbook.Path & "\" & "buscarhoja2.xls"
End
End If
Windows("prueba").Activate
Range("A1").Select
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub

Si funciona a la perfección, solo que el cursor se queda en al ultima hoja abierta, no me deja en la mi hoja menu celda A1, eso mas por favor si me puedes ayudar gracias y no te molesto mas :)

jesús

Eso no era parte de la pregunta... pero bueno.

Después de esta linea:

If CloseMode = vbFormControlMenu Then Cancel = True

Pon esto:

Sheets("hoja1"). Activate

sheets("hoja1").range("A1").select

Debes cambiar hoja1 por el nombre de tu hoja menu

Estimado Experto, negativo no funciona el código, abre los dos libros pero no regresa a mi libro PRUEBA.XLS ?

Ayuda por favor,

Jesus

Como decia eso ya es otra pregunta, por favor cierra la pregunta basandote en la respuesta a la pregunta original, luego vemos el otro tema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas