Buongiorno a tutti,
ho una cartella su un server dove ci sono miei programmi excel che possono essere utilizzati da più PC. Quindi su ogni PC si può accedere ad ognuno di questi programmi, a patto che non sia già utilizzato da un altro operatore (in quel caso avvisa che il file è già in uso e pone la domanda se lo si vuole aprire solo in lettura, etc...).
Per avere un quadro della situazione ho creato un programma a parte, dove sono elencati i nomi dei miei programmi e nella cella a fianco viene visualizzato se attualmente è in uso, se disponibile o fuori uso (quest'ultimo in casi eccezionali...)
Il codice (che, per essere onesto, non è tutta farina del mio sacco) che controlla il tutto è questa:
Public Function fOpenError(filename As String) As Integer
Dim fNum As Integer
On Error Resume Next
fNum = FreeFile()
Open filename For Input Lock Read As #fNum
Close fNum
fOpenError = Err
On Error GoTo 0
End Function
Public Sub TestPIPPO()
Select Case fOpenError("\\ABCServer\PIPPO\Programmi Miei\PIPPO.xls")
Case 0 ' nessun errore
Range("B3").Value = "DISPONIBILE"
Case 70 ' il file è già aperto
Range("B3").Value = "Attualmente in USO"
Case Else ' altro errore
Range("B3").Value = "FUORI USO"
End Select
End Sub
Public Sub TestPLUTO()
Select Case fOpenError("\\ABCServer\PIPPO\Programmi Miei\PLUTO.xls")
Case 0 ' nessun errore
Range("B4").Value = "DISPONIBILE"
Case 70 ' il file è già aperto
Range("B4").Value = "Attualmente in USO"
Case Else ' altro errore
Range("B4").Value = "FUORI USO"
End Select
End Sub
Public Sub TestPAPERINO()
Select Case fOpenError("\\ABCServer\PIPPO\Programmi Miei\PAPERINO.xls")
Case 0 ' nessun errore
Range("B5").Value = "DISPONIBILE"
Case 70 ' il file è già aperto
Range("B5").Value = "Attualmente in USO"
Case Else ' altro errore
Range("B5").Value = "FUORI USO"
End Select
End Sub
Quindi, nell'esempio, nella cella A3 ho scritto il nome PIPPO, nella A4 il nome PLUTO e nella A5 il nome PAPERINO: e, tramite un pulsante che aggiorna estemporaneamente la situazione, funziona alla grande.
La mia domanda è questa:
è possibile indicare nelle rispettive celle C3, C4 e C5 il nome del PC sul quale è aperto il file corrispondente?
Chiaramente i programmi presenti nella cartella sono una ventina ma, per semplificare, ho postato la macro (con nomi modificati) tenendo conto solo di tre programmi (PIPPO.xls, PLUTO.xls e PAPERINO.xls) poichè, capito il codice da dover eventualmente utilizzare (grazie al vostro prezioso aiuto), la cosa si ripete sempre...
Io vi ringrazio già da ora per l'aiuto (spero sia fattibile) e la pazienza che mi dedicherete.
Restando in attesa, approfitto per salutare tutti voi.
Elio
PS - spero di essermi espresso bene e di non aver omesso nulla...
🙏
[Modificato da elioeco 28/01/2023 09:38]
EcoBand