Comprobar si libro compartido, sino cancela macro

Hola experto;
Desde ya te doy las gracias por tu ayuda. Te explico mi problema a ver sime puedes echar una mano: Tengo un libro excel que esta compartido, este libro tiene muchas macros que básicamente he hecho con la ayuda de la grabadora. Mi problema es que mi red es un poco irregular y a veces el libro deja de estar compartido y no nos damos cuenta hasta que gravamos y es muy difícil saber que hemos hecho desde la ultima vez que guardamos.
He pensado solucionarlo poniendo una instrucción en todas las macros que lo primero que haga es comprobar si el libro esta compartido y si lo esta ejecute la macro. Sino lo esta cancele la macro y nos de el siguiente mensaje: " La macro ha sido cancelada porque el libro NO esta compartido"
No se si me explique bien... Sino dímelo que vuelvo a intentarlo, ojala me puedas dar una mano o orientarme y sino igualmente gracias por tu tiempo
Respuesta
1
Más que saber si el libro está compartido o no, pienso que te sería suficiente con saber si la red está funcionando.
Para ello podrías grabar y borrar un fichero cualquiera de texto en el disco de red y, si tiene un error, sería porque no funciona.
Podría ser algo así:
    Dim nf As Integer
    Dim nomFich As String
    Dim nErr As Long
    ' Construimos un nombre de fichero que no se repita fácilmente en la misma carpeta de la
' hoja de cálculo (así aseguramos que existe el path completo)
    nomFich = ThisWorkbook.Path & "\" & Environ("username") & Format$(Now(), "yyyymmddhhnnss") & ".txt"
    On Error Resume Next ' Si hay algún error ya lo controlaremos
    nf = FreeFile
    Open nomFich For Output As nf ' Creamos el nuevo fichero
    Close nf ' Y lo cerramos
    Kill nomFich ' Borramos el fichero recien creado
    nErr = Err ' Recuperamos el último error ocurrido
    On Error GoTo 0 ' Dejamos que los errores posteriores los controle el VB
    If nErr <> 0 Then
        MsgBox "ERROR: No se puede grabar en el disco de la red. Proceso cancelado"
        Exit Sub
    End If
Muchas gracias por la rapidez.
La red me funciona, simplemente a veces se pierde momentáneamente pero vuelve en seguida. Es un tema que me tiene que me tienen que mirar. Me guardaré tu explicación con mimo para cuando vengan a mirarme la red.
Hasta entonces y para salir del paso, solo necesitaría poner la instrucción en mis macros que controle si el libro esta compartido, si lo esta que ejecute la macro y sino lo esta que la cancele dando un mensaje.
De veras que agradezco mucho tu solución y seguro que me será de utilidad, pero ahora en plena campaña de navidad solo necesito algo que me ayude a salir del paso porque es cuando más trabajo tenemos y con esta instrucción de controlar compartido saldría seguro, ya que la red se nos suele ir una vez cada 2 días más o menos, pero basta con cerrar el archivo y volverlo a abrir para recuperarla. Gracias de nuevo por tu tiempo
Nunca he trabajado con libros compartidos, por lo que no sé bastante sobre el tema.
Por lo que he visto, tienes 'SharedWorkspace' para ver las características del libro compartido.
Así, thisworkbook. SharedWorkspace. Connected debería decirte si estás con el libro compartido o no.
Es posible que, al no tener el libro compartido por problemas de red y no ser por la forma de trabajo, esta propiedad no sea siempre correcta. Pero no puedo asegurar ni desmentir nada porque, ya te he comentado antes, no he trabajado con Excel compartido.
Otra cosa que he visto es que cuando un libro está compartido hay ciertas cosas que no se puede hacer, como crear nuevas páginas o unir dos celdas.
Basándote en esta última afirmación podrías crearte una función que realice una de esas tareas y, si te da un error, controlar el código y saber si es por estar compartido el libro.
Esto sería hacer algo así:
Function snCompartido() As Boolean
    On Error Resume Next
    ThisWorkbook.Sheets.Add
    If Err = 0 Then
        ' Se ha creado la página, la borramos y sabemos que no está compartido
        ThisWorkbook.ActiveSheet.Delete
        snCompartido = False
      Else
        ' No se ha creado, por lo que no borramos nada.
        ' Tenemos que asegurarnos que el error se ha producido por estar compartido el
        ' libro y no por otro motivo. En este caso tendrás que mirar tu el error
        ' que se produce y poner el código correcto
        MsgBox Error$
        snCompartido = (Err = XXXXXX)
    End If
    On Error GoTo 0
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas