Condividi:        

vba word: controllare se ci sono documenti aperti

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

vba word: controllare se ci sono documenti aperti

Postdi karug64 » 24/08/16 19:43

Salve a tutti.

Avrei necessità di controllare (sull'evento click di un bottone) se oltre al documento aperto che sto eseguendo (thisDocument) ce ne sono altri con i relativi nomi (e percorsi).

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba word: controllare se ci sono documenti aperti

Postdi karug64 » 24/08/16 20:11

MI rispondo da solo (trovato in rete un codice riadattato alle mie esigenze e magari utile a qualche altro lettore)

Codice: Seleziona tutto
Public Function ctrl_word()

Dim aWord As Object, oDoc As Object
Dim sText As String
Dim iDoc As Long

On Error Resume Next
'Recupera il riferimento all'istanza di Word
Set aWord = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        MsgBox "Non è stato possibile trovare l'istanza di Word", vbExclamation
        ctrl_word = True
        Exit Function
    End If
On Error GoTo 0

'verifica quanti documenti sono aperti in Word.
l = aWord.Documents.Count

If l = 1 Then
    ctrl_word = False
    Exit Function
Else
    If (l - 1) = 1 Then
        sText = "Risulta aperto il seguente documento" & vbCrLf & vbCrLf
    Else
        sText = "Sono stati trovati i seguenti " & (l - 1) & " documenti aperti:" & vbCrLf & vbCrLf
    End If
    'recupera il nome dei documenti trovati.
        For Each oDoc In aWord.Documents
            If oDoc.Name <> ThisDocument.Name Then
                sText = sText & oDoc.Name & vbCrLf
            End If
        Next oDoc

            sText = sText & vbCrLf & "Occorre chiudere i documenti aperti prima di procedere alla generazione"
            MsgBox sText, vbCritical + vbOKOnly, "Chiudere documenti"
            'pulizia delle variabili
            Set oDoc = Nothing
            Set aWord = Nothing
            ctrl_word = True
            Exit Function
End If
End Function
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: vba word: controllare se ci sono documenti aperti

Postdi Anthony47 » 24/08/16 23:35

Non hai bisogno di farla cosi' complicata... Visto che parli di una macro di Word non hai bisogno di cercare l'oggetto Word.Application, puoi usare direttamente "Application":
Codice: Seleziona tutto
L = Application.Documents.Count

(o anche semplicemente Documents.Count, essendo Application di default).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: controllare se ci sono documenti aperti

Postdi karug64 » 25/08/16 17:52

Ok. Grazie.

Riscritta così

Codice: Seleziona tutto
Public Function ctrl_word()

Dim sText As String

'verifica quanti documenti sono aperti in Word.
l = Documents.Count

If l = 1 Then
    ctrl_word = False
    Exit Function
Else
    If (l - 1) = 1 Then
        sText = "Risulta aperto il seguente documento" & vbCrLf & vbCrLf
    Else
        sText = "Sono stati trovati i seguenti " & (l - 1) & " documenti aperti:" & vbCrLf & vbCrLf
    End If
    'recupera il nome dei documenti trovati.
        For x = 1 To l
            If Documents(x).Name <> ThisDocument.Name Then
                sText = sText & Documents(x).Name & vbCrLf
            End If
        Next x

            sText = sText & vbCrLf & "Occorre chiudere i documenti aperti prima di procedere alla generazione"
            MsgBox sText, vbCritical + vbOKOnly, "Chiudere documenti"
            ctrl_word = True
            Exit Function
End If
End Function
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba word: controllare se ci sono documenti aperti":


Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti