Word Problema filtro destinatari in stampa unione

Fabrizio 40 Punti di reputazione
2025-09-22T11:48:03.18+00:00

Salve.

In un Documento Stampa Unione di Word, ho creato questo codice (eseguito all'apertura del file)

With ThisDocument
	
.MailMerge.OpenDataSource Name:= _
	"" & .Path & "\GESTIONE DATI.xls", ConfirmConversions:=False, _
    ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
    PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
    WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
    Connection:= _
    "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & .Path & 		"\GESTIONE DATI.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Data" _
            , SQLStatement:="SELECT * FROM `Rimborsi$` WHERE (Qualifica<>'ALLENATORE' AND Qualifica<>'ATLETA')", SQLStatement1:="", SubType:= _
	wdMergeSubTypeAccess

end with

per estrarre dei records filtrati da un foglio di calcolo di Ecxel.

Inizialmentè è OK, ma dopo il primo accesso alla finestra di dialogo 'Destinatari Stampa Unione', la volta successiva mi ritrovo visibili i records con Qualifica "ATLETA" che avevo escluso con il filtro di cui sopra (N.B. restano correttamente filtrati quelli con Qualifica "ALLENATORE")

Ciò mi fa pensare a qualche minimo errore nella sintassi vba. Qualche idea?

Grazie.

Microsoft 365 e Office | Altro
0 commenti Nessun commento

Risposta accettata dall'autore della domanda
Francisco Montilla 30,710 Punti di reputazione Consulente indipendente
2025-09-22T14:04:53.3633333+00:00

Ciao!

Non stai facendo nulla di sbagliato. La finestra di dialogo Mail Merge Recipients in Word tende a riscrivere il filtro quando ricostruisce la query dalla sua interfaccia interna. Una coppia di filtri "diverso da" sulla stessa colonna spesso sopravvive solo parzialmente dopo che apri quella finestra di dialogo, quindi la seconda esclusione può essere eliminata. La correzione più semplice è comprimere entrambe le esclusioni in un unico predicato che Word manterrà intatto.

Sostituisci la tua clausola WHERE con NOT IN in questo modo:

With ThisDocument
    .MailMerge.OpenDataSource Name:= _
        "" & .Path & "\GESTIONE DATI.xls", ConfirmConversions:=False, _
        ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & .Path & "\GESTIONE DATI.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Data", _
        SQLStatement:="SELECT * FROM `Rimborsi$` WHERE Qualifica NOT IN ('ALLENATORE','ATLETA')", _
        SQLStatement1:="", SubType:=wdMergeSubTypeAccess
End With

Questo mantiene entrambe le esclusioni come un’unica condizione, così quando Word rigenera la sua vista dopo che apri la finestra Recipients, non elimina silenziosamente il secondo filtro e le righe con 'ATLETA' resteranno nascoste.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.

0 risposte aggiuntive

Ordina per: Più utili

Risposta

Le risposte possono essere contrassegnate come "Accettata" dall'autore della domanda e "Consigliata" dai moderatori, in modo da consentire agli utenti di sapere che la risposta ha risolto il problema dell'autore.