Newsgroup: it.comp.lang.visual-basic
Titolo: [net] File *.doc già aperto

Si abbia il seguente codice (insomma, più o meno)
Dim o as object
o = createobject("Word.Application")
o.documents.open (Nomedelfiledaaprire)
Come fare a evitare l'errore nel caso in cui il file da aprire sia
correntemente in uso?
Ringraziamenti anticipati.
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Sergio
Non sono sicuro di aver realmente capito la difficoltà che incontri
ma ti espongo quanto credo:
Prima testo GetObject se non da errore è perchè già in uso
altrimenti errore 429 e gestisco il Create:
Private Function/Sub ()
   On Error GoTo gestErrori
   o as object
   Set o = GetObject(, "Word.Application")
   .............
   Exit Function/Sub
gestErrori:
   If err.Number = 429 Then
       'se c'è stato un errore è perchè Word non era già aperto:
       Set wordApp = CreateObject("Word.Application")
       Resume Next
   Else
      ......
    End if
Exit Function/Sub
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 Prima testo GetObject se non da errore è perchè già in uso
Non confondere il fatto che il file sia in uso col fatto che il file 
sia aperto da una istanza di word sulla stessa sessione.
Melchiade cercava il modo di sapere se un file di word è in uso.
Non saprei, ma con Word c'è modo di aprire un file se è in uso, con una 
sorta di notifica al rilascio. Potresti provare (parlo al Melchiade) a 
attivare il registratore di macro e a scancherare un po' con le 
aperture speciali di word. Chissà che non ti appaia qualche proprietà o 
metodo dell'object model di word, che non sapevi neppure esistesse (a 
proposito, Word2003 ha un help fantastico per l'object model vba di 
word e excel...).
Ciao
Alberto
-- 
"Se viriamo, viriamo viriamo viriamo;
Se andiamo dritti, viriamo"
(Cit. "il tattico")

 Alberto
Si hai ragione, ma la premessa che ho fatto era proprio riferita a questo.
IN questo caso ciclando tra i processi non troveresti altro che Word.Exe
ma accedendo alle applicazioni forse dovresti tovare anche il file
aperto...!
In alternativa si potrebbe cercare l'HWND in base alla stringa(·
lpWindowName)
di FindWindow , sperando non venga modificata la Caption...!
Non mi viene in mente altro.
Saluti


 Non mi viene in mente altro.
Insisti con questa storia di applicativo, finestre, processi, che non 
centra una mazza col problema di Melchiade.
Un file di word può essere in uso da un processo di proprietà di 
un'altra sessione (se su macchina server NT), o addirittura di un altro 
pc della rete.


    Set o = GetObject(, "Word.Application")
Scusate, vado un attimo dietro la lavagna in ginocchio sui ceci...
Avevo pensato anche io a questa strada, ma dimenticavo la virgola :-(
Se questa istruzione fallisce word non è aperto, e se non è aperto sono
ragionevolmente sicuro del fatto che i file *.doc non siano in uso...
 
Thanks


 pc della rete.
In linea teorica sì.
Nello specifico si tratta di una applicazione monoutente, e se il file non
è aperto da una istanza di word sulla stessa macchina è sicuramente chiuso.


 word e excel...).
Adesso ci butto un occhio...


pc della rete.
Non avendo la palla di vetro(ma di legno) no ho immaginato nulla.....
se non la possibilità (limitata alla monoutenza), ma dove si parla di
RETE..?
Dove Melchiade espone (quanto poi si è rivelato errato) quanto
dici...?
Saluti
 
@Alex