Verifica se una cartella di lavoro è aperta (Microsoft Excel)
Brian ha una cartella di lavoro complessa che apre molto brevemente altre cartelle di lavoro di supporto e quindi le chiude, salvando le modifiche. Ha un ufficio con tre persone che usano i suoi macro e, a volte, ottengono un conflitto in cui due persone cercano di ottenere un purchase order
numero allo stesso tempo. Ciò causa l’apertura della cartella di lavoro dell’ordine di acquisto in modalità di “sola lettura” per la seconda occorrenza che crea confusione per gli utenti. Brian si chiede se esiste una riga di codice VBA che interromperà il comando “apri cartella di lavoro” se la cartella di lavoro di destinazione è già aperta da un altro utente. In questo modo potrebbe rilevare potenziali problemi prima che si verifichino.
È molto più facile avere il codice, dopo l’apertura, controlla se la cartella di lavoro è stata aperta in modalità di sola lettura. In tal caso, puoi intraprendere un’azione appropriata alla tua situazione. (Ad esempio, potresti chiudere la cartella di lavoro, attendere un breve periodo e ritentare l’operazione e il test.) Ecco come puoi controllare per vedere lo stato di sola lettura:
Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx") If wkBook1.ReadOnly Then wkBook1.Close False End If
Si noti che è la proprietà ReadOnly che restituisce le informazioni desiderate. Se è necessario controllare il file in anticipo, è possibile provare a utilizzare alcune delle istruzioni di accesso ai file disponibili in VBA. Questo è ciò che fa la seguente funzione.
Function FileIsLocked(strFileName As String) As Boolean FileIsLocked = False On Error Resume Next Open strFileName For Binary Access Read Write Lock Read Write As #1 Close #1 ' If an error occurs, the document is currently open If Err.Number <> 0 Then FileIsLocked = True Err.Clear End If End Function
Per utilizzare la funzione, passagli il nome (incluso il percorso completo) della cartella di lavoro che desideri controllare. La funzione restituisce True se il file è bloccato e False se non lo è. Ricorda, tuttavia, che dal momento in cui questa funzione controlla il file fino al momento in cui provi effettivamente ad aprire il file, potrebbe essere stato aperto da qualcun altro. Quindi, il primo approccio (controllo dopo aver tentato di aprire) potrebbe essere l’approccio migliore da usare.)
Va notato, inoltre, che puoi anche salvare le altre cartelle di lavoro come cartelle di lavoro condivise. Ciò consentirebbe loro di essere aperti da più utenti senza problemi. Ovviamente, ti consigliamo di verificare in che modo questo approccio influisce sui dati che potresti voler salvare nelle cartelle di lavoro.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (5831) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.