Newsgroup: it.comp.appl.access
Titolo: Problema Fastidioso

Salve,
ho una maschera che attraverso un pulsante mi genera un documento word
(.doc)
Il codice è questo:
On Error GoTo Errore
Dim objApp As Word.Application
Dim nomeFiletmp As String
nomeFiletmp = "C:\Documents and
Settings\Administrator\Desktop\sigma\commerciale\offerte\off" &
Me.nr_offerta & Me.anno & ".doc"
Set objApp = CreateObject("Word.Application")
If Dir(nomeFiletmp) = "" Then '<-- il file non esiste, lo crea
   objApp.Documents.Open "C:\Documents and
Settings\Administrator\Desktop\sigma\commerciale\offerte\master.doc", False
   objApp.ActiveDocument.SaveAs nomeFiletmp
Else '<-- esiste e lo apre
   objApp.Documents.Open nomeFiletmp
End If
objApp.Visible = True
objApp.Activate
Exit Sub
Errore:
   Set objApp = Nothing
   MsgBox Err.Number & " " & Application.AccessError(Err.Number)
Il problema fastidioso è che una volta creato il documento in modo corretto
alla chiusura di Word il sistema mi dice:
"Al momento il file è usato da un'altra applicazione (...normal.dot)"
Clikko "OK" e il sistema mi chiede di salvare il file "normal.dot" gli do
annulla e mi ritorna word.
Chiudo Word e il sistema mi chiede "File Normal.dot è stato
modificato...salvare?" gli dico "NO" e word si chiude.
Guardo sul Task Manager e c'è sempre l'applicativo winword.exe attivo.
Come faccio a risolvere questo problema???
grazie

 ha scritto nel messaggio 
news:cmgahk$o24$1...@carabinieri.cs.interbusiness.it...

sarà un problema fastidioso anche per chi in futuro vorrà leggere il tuo 
messaggio ... con un oggetto così poco significativo nessuno potrà ottenere 
risposte per problemi analoghi. Prova a ripostare con un oggetto più consono 
al problema, troverai sicuramente qualcuno disposto ad aiutarti! 

 (.doc)
[omissis]
Credo che il problema sia che tu elimini il *riferimento* objApp solo in
caso di errore.
Devi eliminarlo anche in caso di successo della tua Sub.
Una cosa del tipo,
'alla fine della tua routine
    objApp.Visible = True
    objApp.Activate
TERMINATE:
     set objApp=Nothing
Exit Sub
 Errore:
    MsgBox Err.Number & " " & Application.AccessError(Err.Number)
    goto TERMINATE
End Sub
La variabile objApp è dichiarata a livello di routine e lì termina il suo
scope. Ma di fatto il garbage collector trova "difficoltà" ad eliminare i
riferimenti in late binding.
Prova e fa sapere.
Saluti,
    Daniele M.

 ha scritto nel messaggio
news:cmgcss$r4q$1...@carabinieri.cs.interbusiness.it...

Ho fatto come dici e ora mi dice:
Il file normal.dot esiste già.Sostituirlo????
Gli doco "NO" e word rimane aperto...chiudo e mi richiede di salvare il file
normal.dot


Mi sembra di aver seguito il tuo problema o mi sbaglio?
(in caso affermativo) Non mi avevi indicato che volevi utilizzare un modello 
di documento?
Dove il file non esisteva si doveva aprire un modello (file .dot) e veniva 
creato il documento basato su quel modello; quindi la riga diventa:
If '<-- il file non esiste lo crea
    objApp.Documents.Add "quiCiVaIlNomeDelModelloPuntoDOT"
...
(in caso negativo o in ogni caso)
Hai provato a disabilitare il salvataggio automatico ogni X secondi?
Verifica, prima di qualsiasi cosa, anche se le due caselle di testo siano 
piene.
Ho effettuato una prova con questo esempio di codice:
Sub prova()
On Error GoTo Errore
Dim objApp As Word.Application
Dim nomeFiletmp As String
nomeFiletmp = "C:\prova\off1234XXX.doc"
Set objApp = CreateObject("Word.Application")
If Dir(nomeFiletmp) = "" Then '<-- il file non esiste, lo crea
  objApp.Documents.Open "C:\prova\documentoDiProva.doc", False
   objApp.ActiveDocument.SaveAs nomeFiletmp
 Else '<-- esiste e lo apre
   objApp.Documents.Open nomeFiletmp
 End If
 objApp.Visible = True
 objApp.Activate
 Exit Sub
Errore:
   Set objApp = Nothing
   MsgBox Err.Number & " " & Application.AccessError(Err.Number)
End Sub
E fa quello che dice senza lasciare sessioni di word aperte...
(più tardi) Allora dopo tutto questo ambaradam ho scoperto che se apri il 
documento con:
objApp.Documents.Open "C:\Documents and....
e poi salvi il documento con un altro nome, anche se chiudi la sessione i 
file sembrano essere bloccati da qualche altra "applicazione"; non mi fa 
neanche cancellare la cartella dove risiedono i file creati.
Se invece trasformi il documento i modello (.dot) come ti avevo suggerito e 
apri il nuovo documento con:
objApp.Documents.Add "quiCiVaIlNomeDelModelloPuntoDOT"
e lo salvi, non rimane nessuna sessione strana e la certella riesco a 
cancellarla...
Ciao.
-- 
Sergio MAZZA 


Ah! Quanto c'hai ragione...
Ciao.
-- 
Sergio MAZZA 

 ha scritto nel messaggio
news:cmg9d6$d22$1...@canarie.caspur.it...

Ah quanto c'ha ragione Ciroteo!!
MAssimiliano

 MAssimiliano
Sta' bbono che già in Islanda se né svegliato uno, non vorrei che se ne 
sveglia un altro!!
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Ueh non echerziamo!!!
;-P
MAssimiliano

 ha scritto nel messaggio 
news:P0Pid.30715$B06....@news.edisontel.com...

voi due prima o poi ... stavo leggendo sto messaggio e son scoppiato a 
ridere ...risultato: tutto il caffè sulla camicia! ...
fanc......... 

 fanc.........
Veramente mi ha già chiesto la mano e forse non intendeva per access...
Ciao.
-- 
Sergio MAZZA