sto continuando a "rifinire" il file protocollo che allego di seguito per verificarne i progressi.
protocollo
Ora mi sono accorto di un fastidioso problema causato da una macro di salvataggio automatico che non posso togliere per problemi di sicurezza e che incorre quando il file protocollo viene aperto in sola lettura perchè già aperto su un altro pc.
Perciò mi sono chiesto se non ci fosse il modo di far saltare i comandi alla macro incriminata verificando la condizione che il file non sia aperto in sola lettura.
La macro incriminata è questa:
- Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
Call Macro2
Dim NomeFile As String
Workbooks("pratiche-chiuse.xlsm").Close SaveChanges:=True
End Sub
Che è collegata ad un'altra macro [per avere un molteplice salvataggio anche in una cartella nascosta (mia paranoia dopo 2 attacchi hacker nel giro di pochi anni)]:
- Codice: Seleziona tutto
Sub Macro2()
nomecopia = "O:\Salvataggi\" & Hour(Now()) & "." & Minute(Now()) & " " & "-" & " " & Day(Date) & "." & Month(Date) & "." & Year(Date) & " " & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs nomecopia
End Sub
Ora essendo la prima macro a richiamare la seconda avevo pensato di agire sulla prima (BeforeClose) e dopo verifica,
- Codice: Seleziona tutto
If ActiveWorkbook.ReadOnly Then
nel caso di farle saltare i comandi successivi. Quindi la prima diventerebbe all'incirca così:
- Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ActiveWorkbook.ReadOnly Then
Application.DisplayAlerts = False
Workbooks("pratiche-chiuse.xlsm").Close SaveChanges:=False
ActiveWorkbook.Close
Application.Quit
End If
ActiveWorkbook.Save
Call Macro2
Dim NomeFile As String
Workbooks("pratiche-chiuse.xlsm").Close SaveChanges:=True
End Sub
Ma purtroppo ricevo un errore di Run-Time 9 "INDICE NON INCLUSO NELL'INTERVALLO" e il debug mi evidenzia questa riga: