Evitar cierre de Archivo

03/10/2006 - 21:23 por José A. Castrejón | Informe spam
Hola Buenas tardes. Deseo saber si es posible evitar que un archivo se cierre
mientras esté otro abierto.
Uso un archivo para emitir facturas, en éste tengo un combobox el cual toma
los nombres de los clientes de otro archivo. La cuestion es que si el usuario
cierra el archivo de catalogo, el combobox deja de funcionar o me envía un
error.

He intentado con Auto_Close y con el evento Before_Close, y envío un mensaje
de advertencia al usuario, de hecho siempre actualizo una celda para que me
pregunte si quiero guardar cambios, y si en ese momento el usuario aprieta el
boton aceptar el archivo se cierra.
Si esto no es posible, ¿se puede actualizar un combobox desde un archivo
cerrado ? he intentado :

ComboBox1.ListFillRange = "Cat_Ctes.xls!CLIENTES" y esto funciona si el
archivo está abierto, de otra forma no funciona.

Si ésto ultimo tampoco se puede, ¿Existe algun evento del combobox que se
ejecute "antes" de Change?, si es así, podria en ese evento verificar si el
archivo está abierto y actualizar la propiedad del combobox... supongo...

Ahora bien si el archivo de facturas está cerrado el archivo de clientes
debe permitir el cierre. Tengo un codigo para saber si algun libro está
abierto o no (codigo que me dio Hector Miguel si recuerdo bien). Y lo utilizo
para abrir el catalogo de clientes cuando abro facturas.

Gracias
 

Leer las respuestas

#1 Héctor Miguel
04/10/2006 - 05:53 | Informe spam
hola, José !

podrias evitar que el libro con el catalogo de origen se pueda cerrar mientras este abierto el archivo de facturas [p.e.]
en el proyecto de macros del libro 'catalogo' [Cat_Ctes.xls] copia/pega los siguientes codigos:

a) en un modulo de codigo general...

Function EsArchivoAbierto(ByVal Nombre As String) As Boolean
Dim Libro As Workbook
On Error Resume Next
Set Libro = Workbooks(Nombre)
EsArchivoAbierto = (Not Libro Is Nothing)
Set Libro = Nothing
End Function

b) en el modulo de codigo del libro [ThisWorkbok]

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = EsArchivoAbierto("el archivo de facturas.xls")
End Sub

saludos,
hector.

__ la consulta original __
... evitar que un archivo se cierre mientras este otro abierto.
... un archivo para emitir facturas... un combobox... toma los nombres de los clientes de otro archivo
... si el usuario cierra el archivo de catalogo, el combobox deja de funcionar o me envia un error.
He intentado con Auto_Close y con el evento Before_Close, y envio un mensaje de advertencia al usuario
de hecho siempre actualizo una celda para que me pregunte si quiero guardar cambios
y si en ese momento el usuario aprieta el boton aceptar el archivo se cierra.
Si esto no es posible, se puede actualizar un combobox desde un archivo cerrado ? he intentado:
ComboBox1.ListFillRange = "Cat_Ctes.xls!CLIENTES" y esto funciona si el archivo esta abierto, de otra forma no funciona.
Si esto ultimo tampoco se puede, Existe algun evento del combobox que se ejecute "antes" de Change?
si es asi, podria en ese evento verificar si el archivo esta abierto y actualizar la propiedad del combobox... supongo...
Ahora bien si el archivo de facturas esta cerrado el archivo de clientes debe permitir el cierre.
Tengo un codigo para saber si algun libro esta abierto o no... lo utilizo para abrir el catalogo de clientes cuando abro facturas.

Preguntas similares