Login


Top Formazione

CSS - Fogli di Stile
C41bfda970f05bc279ec2a09ee5a77db_74_ Se vuoi lavorare nel Web Design professionale non puoi fare a meno di conoscere il funzionamento dei fogli di stile...

Manuali.net Social

Facebook? Twitter? RSS Feed

Newsletter







Su Facebook!

Manuali.net su Facebook
  #1  
Vecchio 25-11-2005, 11:40
sal21 sal21 non è in linea
Registered User
 
Registrato dal: May 2003
Messaggi: 247
predefinito sapere se un file è già aperto da altro utente

ho un wbook in una dir su un server in questa dir tutti hanno accesso. In questa dir ho un wbook che può essere naturalmente aperto da chiunque.

E' possiblie in fase di apertura del file, se questo è gia aperto da un altro utente, invece del tipico messaggio di Excel "questo file e già aperto da...." far apparire uin msg box "attenzione questo file è giò aperto da NomeUtente" e dopo che hai fatto click su OK chiudere il file .xls?

Per identificare l'utente che ha aperto il file uso questo, forse vi può essere di aiuto:

Sub USER_NAME()
Dim wshNet
ThisWorkbook.Activate
Sheets("RATE").Select
Set wshNet = CreateObject("WScript.Network")
wshGetUserName = wshNet.UserName
Set wshNet = Nothing
Range("A1") = ""
Range("A1") = UCase(wshGetUserName)
End Sub
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
  #2  
Vecchio 25-11-2005, 23:17
L'avatar di grullo
grullo grullo non è in linea
Mode®ato®e
 
Registrato dal: May 2002
Messaggi: 1,973
predefinito

Allora x sapere se il file è aperto da un altro utente si utilizza una tecnica ke abbiamo analizzato altre volte in questo forum (...usare la funzione CERCA non fa mai male!!!)...
si tratta di tentare di aprire il file (XLS o altro) con un lock esclusivo e gestire eventuali errori.
Se si riesce ad aprire il file con il lock, significa ke nessuno lo sta usando (e lo kiudo), altrimenti viene generato un errore ke gestiamo noi...

Qui la funzione che puoi copiare con i valori ke restituisce...

'--------------------------------------------------
' Long Function [FileIsOpen]
' Verifica se il file è aperto da un altro utente
' 0 = file non aperto
' 1 = file aperto
' 100 = errore non previsto
'--------------------------------------------------
Private Function FileIsOpen(fileToOpen) As Long
Dim f As Integer
f = FreeFile
On Error GoTo ERROR_OPEN
Open fileToOpen For Binary Access Read Lock Read As #f
Close #f
FileIsOpen = 0 ' file non aperto
Exit Function
ERROR_OPEN:
If Err = 70 Then ' file già aperto
FileIsOpen = 1
Err.Clear
ElseIf Err <> 0 Then
FileIsOpen = 100 ' altro tipo d'errore
End If
End Function

__________________
Software is like sex, it's better when it's free
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
  #3  
Vecchio 26-11-2005, 13:32
sal21 sal21 non è in linea
Registered User
 
Registrato dal: May 2003
Messaggi: 247
predefinito Ok. ma ....

Quote:
Originariamente postato da grullo
Allora x sapere se il file è aperto da un altro utente si utilizza una tecnica ke abbiamo analizzato altre volte in questo forum (...usare la funzione CERCA non fa mai male!!!)...
si tratta di tentare di aprire il file (XLS o altro) con un lock esclusivo e gestire eventuali errori.
Se si riesce ad aprire il file con il lock, significa ke nessuno lo sta usando (e lo kiudo), altrimenti viene generato un errore ke gestiamo noi...

Qui la funzione che puoi copiare con i valori ke restituisce...

'--------------------------------------------------
' Long Function [FileIsOpen]
' Verifica se il file è aperto da un altro utente
' 0 = file non aperto
' 1 = file aperto
' 100 = errore non previsto
'--------------------------------------------------
Private Function FileIsOpen(fileToOpen) As Long
Dim f As Integer
f = FreeFile
On Error GoTo ERROR_OPEN
Open fileToOpen For Binary Access Read Lock Read As #f
Close #f
FileIsOpen = 0 ' file non aperto
Exit Function
ERROR_OPEN:
If Err = 70 Then ' file già aperto
FileIsOpen = 1
Err.Clear
ElseIf Err <> 0 Then
FileIsOpen = 100 ' altro tipo d'errore
End If
End Function

ammettiamo che volessi inserire questa function nell'evento autoopen this workbook.... in modo da sapere se un altro utente ha già aperto il file? se mi fai un esempio...

Note: Ti apsetto a Napoli almeno per Natale, ciao.
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
  #4  
Vecchio 26-11-2005, 14:36
L'avatar di grullo
grullo grullo non è in linea
Mode®ato®e
 
Registrato dal: May 2002
Messaggi: 1,973
predefinito

Forse non ho ben capito:
tu vuoi controllare se il file xls è aperto inserendo del codice al suo interno?
Questo non è possibile...
devi verificare ke quel determinato file è gia aperto o meno (prima di aprirlo) attraverso o un altro file xls (con macro) o altro (EXE, servizio).

Forse non ho ben kiaro ciò ke vuoi fare... ma credo che stai tirando il collo ad un pollo ormai spennato (come ti ho già detto altre volte forse sarà il caso x te di passare ad un linguaggio di programmazione e l'ausilio di un DB, anke multiutente).
__________________
Software is like sex, it's better when it's free
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
  #5  
Vecchio 26-11-2005, 14:38
L'avatar di grullo
grullo grullo non è in linea
Mode®ato®e
 
Registrato dal: May 2002
Messaggi: 1,973
predefinito

Beh per l'invito a Napoli per adesso non so (ma credo sia difficile almeno fino a fine anno) casomai se capitassi tu a ROma fammi sapere (io ci sono dal Lunedi al Venerdi).

Ciao
__________________
Software is like sex, it's better when it's free
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
  #6  
Vecchio 26-11-2005, 14:44
sal21 sal21 non è in linea
Registered User
 
Registrato dal: May 2003
Messaggi: 247
predefinito

Quote:
Originariamente postato da grullo
Forse non ho ben capito:
tu vuoi controllare se il file xls è aperto inserendo del codice al suo interno?
Questo non è possibile...
devi verificare ke quel determinato file è gia aperto o meno (prima di aprirlo) attraverso o un altro file xls (con macro) o altro (EXE, servizio).

Forse non ho ben kiaro ciò ke vuoi fare... ma credo che stai tirando il collo ad un pollo ormai spennato (come ti ho già detto altre volte forse sarà il caso x te di passare ad un linguaggio di programmazione e l'ausilio di un DB, anke multiutente).
Dunque mi spiego...
Ho un file prova.xls in dir \\mioservr\dir\prova.xls questo file viene aperto dall'utente1, e ci lavora
Se l'utente2 tenta di aprire lo stesso file si dovrebbe visualizzare un msgbox(invece del tipico messavgio di Excel"questo file è già ..." il msg box dovrebbe eseere " il file è già aperto dallutente1, non puoi usarlo" dopo aver cliccato su ok del msbox, chiudere il file....
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
  #7  
Vecchio 26-11-2005, 14:58
L'avatar di grullo
grullo grullo non è in linea
Mode®ato®e
 
Registrato dal: May 2002
Messaggi: 1,973
predefinito

OK ho capito!
Quello che ti consiglio di fare è implementare quanto segue (questo in teoria poi vediamo se si può fare realmente!!!):
-(2)All'apertura del documento crei un file temporaneo (lo kiami come vuoi) che poi viene distrutto alla chiusura del wbook.
-(1)Prima però è necessario verificare se questo file esiste, in questo caso sappiamo che il file è in uso... altrimenti o creiamo (2).

Prova ad implementare questo e fammi sapere... purtroppo ora sono di corsa xkè devo recarmi al Linux Day della mia città.
Se mi collego da lì ti farò sapere (xò Excel lì non c'è...)
__________________
Software is like sex, it's better when it's free
Condividi la discussione con i tuoi amici su Facebook Segnala la discussione su Twitter Rispondi quotando
Rispondi

Segnalibri / Condividi

Strumenti della discussione Cerca in questa discussione
Cerca in questa discussione:

Ricerca avanzata
Modalità di visualizzazione Valuta questa discussione
Valuta questa discussione:

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilies sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Salto del forum


Tutti gli orari sono GMT +1. Attualmente sono le 18:34.