Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con attivazione oggetto Word

Ciao a tutti.
Dal mio progetto VB comando un oggetto Word per aprire un documento,
eseguire la stampa unione e chiudere il documento base.
Se non ho sessioni di Word già aperte tutto funziona alla perfezione. Se
invece ho un Word già aperto la stampa unione viene eseguita correttamente,
al termine Word viene visualizzato ma il menù non funziona! Se clicco su una
finestra qualsiasi e poi torno in Word il menù riprende a funzionare.
La cosa interessante è che se tolgo la chiusura del doc base tutto funziona
correttamente in entrambi i casi (sia con Word già aperto che con Word
chiuso).
Qualcuno mi può aiutare?
Grazie
Il codice che uso è questo:
Private Sub cmdApri1_Click()
    dim oWord as Word.Application
    If Not CreaWord(oWord) Then
        Exit Sub
    End If
    oWord.Visible = True
    oWord.WindowState = wdWindowStateMinimize
    oWord.Documents.Open "s:\documenti\prova.doc"
    oWord.ActiveDocument.MailMerge.Execute
    oWord.Documents.Open "s:\documenti\prova.doc"
    oWord.ActiveDocument.Close False
    oWord.WindowState = wdWindowStateNormal
    oWord.Application.Activate
    Set oWord = Nothing
End Sub
Private Function CreaWord(WordApp As Word.Application) As Boolean
'Crea un oggetto word, utilizzando una sessione di Word già aperta
'se esiste, altrimenti creando un nuovo oggetto
Dim bCreaWordOK As Boolean
    On Error Resume Next
    bCreaWordOK = True
    'Tento di collegarmi ad un'applicazione di Word già in esecuzione
    Set WordApp = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        'Se si è verificato un errore significa che Word non è in
esecuzione.
        Err.Clear
        'Creo un nuovo oggetto di tipo Word
        On Error GoTo ErroreCreaWord
        Set WordApp = CreateObject("Word.Application")
    End If
    CreaWord = bCreaWordOK
    Exit Function
ErroreCreaWord:
    MsgBox "Errore in CreaWord" + Err.Description, vbCritical
    bCreaWordOK = False
    Resume Next
End Function

 finestra qualsiasi e poi torno in Word il menù riprende a funzionare.
Ho risolto il problema utilizzando l'oggeto Word.Document invece di
utilizzare ActiveDocument
Ciao
Skysurfer
Private Sub cmdApri1_Click()
    If Not CreaWord(oWord) Then
        Exit Sub
    End If
    oWord.Visible = True
    oWord.WindowState = wdWindowStateMinimize
    Set oDoc =
oWord.Documents.Open("s:\archipro\documenti\richiestapratica.doc")
    oDoc.MailMerge.Execute
    oDoc.Close False
    oWord.WindowState = wdWindowStateNormal
    oWord.Application.Activate
    Set oWord = Nothing
    Set oDoc = Nothing
End Sub

Ciao a tutti.
Dal mio progetto VB comando un oggetto Word per aprire un documento,
eseguire la stampa unione e chiudere il documento base.
Se non ho sessioni di Word già aperte tutto funziona alla perfezione. Se
invece ho un Word già aperto la stampa unione viene eseguita correttamente,
al termine Word viene visualizzato ma il menù non funziona! Se clicco su una
finestra qualsiasi e poi torno in Word il menù riprende a funzionare.
La cosa interessante è che se tolgo la chiusura del doc base tutto funziona
correttamente in entrambi i casi (sia con Word già aperto che con Word
chiuso).
Qualcuno mi può aiutare?
Grazie
Il codice che uso è questo:
Private Sub cmdApri1_Click()
    dim oWord as Word.Application
    If Not CreaWord(oWord) Then
        Exit Sub
    End If
    oWord.Visible = True
    oWord.WindowState = wdWindowStateMinimize
    oWord.Documents.Open "s:\documenti\prova.doc"
    oWord.ActiveDocument.MailMerge.Execute
    oWord.Documents.Open "s:\documenti\prova.doc"
    oWord.ActiveDocument.Close False
    oWord.WindowState = wdWindowStateNormal
    oWord.Application.Activate
    Set oWord = Nothing




