Excel - Problema con ReadOnly - Macros

 
Vista:

Problema con ReadOnly - Macros

Publicado por Sergio (1 intervención) el 24/01/2013 16:41:00
Buenas, les hago una consulta;

Tengo dos archivos de excel "A.xlsm" y "B.xlsm". El archivo A tiene una macro que al momento de cerrar el archivo, sale un mensaje y pregunta: "Desea copiar la info al archivo B?" si le doy en "Si", se abre el archivo B y comienza a copiar los valores a traves de la macro, cuando termina informa con otro mensaje y luego de aceptar se cierran ambos archivos.

El problema surge que el archivo B se encuentra en una carpeta compartida por lo que suele suceder que se encuentre abierto por alguien, por lo tanto al momento de querer copiar los archivos de A => B, este último se abre como solo lectura, se copian los datos pero pide "guardar como" en otro archivo porq al ser de solo lectura no permite ser modificado.

Lo que yo quisiera, es que si B se encuentra abierto y se ejecute la macro q abre B como solo lectura, ahí mismo salga un cartel diciendo algo así como "El archivo B se encuentra abierto, intente mas tarde" y al darle aceptar se cierre B sin dar la opcion de guardar como.

Se les ocurre algo?

Intente usar esto pero sin exito, probablemente lo esté usando mal:

If (GetAttr(ActiveWorkbook.FullName) And vbReadOnly) = vbReadOnly Then

MsgBox "ATENCION: El archivo B se encuentra abierto, intente mas tarde"

ActiveWindow.Close savechanges:=False

End If

End Sub

Saludos y muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Problema con ReadOnly - Macros

Publicado por JuanC (1237 intervenciones) el 28/01/2013 19:09:33
(este código no fue escrito por mí)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub test()
    Dim wkbook As String
    wkbook = "MyWorkbook.xls"
    If IsOpen(wkbook) Then
        MsgBox wkbook & " is open"
    Else
        MsgBox wkbook & " is not open"
    End If
End Sub
 
Function IsOpen(WkBookName As String) As Boolean
    IsOpen = False
    For Each wkbk In Application.Workbooks
        opened = UCase(wkbk.Name) = UCase(WkBookName)
        If opened Then
            IsOpen = True
        End If
    Next wkbk
End Function


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar