.display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

di il
10 risposte

.display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

Buongiorno a tutti.

Da qualche giorno riscontro una anomalia sull'istruzione .diplay all'interno di codice che ha sempre funzionato sia in Excel che su vari Db.

L'istruzione era posta dopo tutte le altre e funzionava correttamente visualizzando la mail dopo la creazione. Ora invece da il seguente errore

run-time 2147221233 (8004010f) - operazione non riuscita, impossibile trovare oggetto.

la mail viene creata in bozze, ma il codice si interrompe sull'istruzione .display

Se sposto l'istruzione all'inizio del codice, tutto funziona anche se la finestra di imputbox viene sovrapposta dalla mail visualizzata, e quindi è poco funzionale (si deve spostarla o ridurla a icona, riempire la inputbox e quindi inviare).

L'altra cosa strana è che lo stesso codice inserito all'interno del Vba di outlook non da il problema e l'istruzione può rimanere l'ultima. Anche dentro alcuni db di Access seguita a funzionare, in altri no. Ho pensato ai riferimenti, ma sembrano esserci tutte le librerie occorrenti.

Posto il codice di excel non funzionante (se sposto .display all'inizio invece funziona).

Grazie a chi vorrà provare a capire la causa.

Dim appOutlook As Object
Dim mail As Object

Set appOutlook = CreateObject("outlook.application")
Set mail = appOutlook.CreateItemFromTemplate(conpercorso)
    With mail
      .Attachments.Add (conAllegato)
      .Subject = "Invio Foglio Presenze Impiegati - Mese di " & InputBox("Inserisci Mese e Anno")
      .Display
    End With
   
Set mail = Nothing

10 Risposte

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    Dove hai inserito il codice? Dove sono le Dim?

    Non distruggere l'oggetto mail alla fine se lo stai ancora usando 

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    Buongiorno Oregon.

    Grazie per l'interessamento.

    Per brevità avevo postato solo la parte interessante, le Dim erano appena sopra.

    Il tutto è all'interno di una Sub (nel caso di excel) e di una Function (nel caso di access)

    Alla distruzione dell'oggetto mail non si arriva, il codice si blocca prima sull'istruzione    .display

    Sub spedisciMAIL()
    
    Dim conpercorso As String
    Dim conAllegato As String
           conpercorso = "C:\xxx.OFT"
           conAllegato = "C:\yyy.xlsx"
       
    Dim appOutlook As Object
    Dim mail As Object
    Set appOutlook = CreateObject("outlook.application")
    Set mail = appOutlook.CreateItemFromTemplate(conpercorso)
       With mail
          .Attachments.Add (conAllegato)
          .Subject = "Invio Foglio Presenze Impiegati - Mese di " & InputBox("Inserisci Mese e Anno")
          .Display
       End With
       
     Set mail = Nothing   
       
    End Sub
  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    04/07/2023 - StefanoACC ha scritto:


    run-time 2147221233 (8004010f) - operazione non riuscita, impossibile trovare oggetto.

    Ciao,

    Come da numero errore la proprietà Display non viene trovata nell'oggetto Outlook

    In questi casi dovresti verificare se ci sono incompatibilità di versioni, se il profilo usato per outlook è corretto, se sono corrette le librerie referenziate, se FromTemplate è corretto, etc etc…

    Penso che queste siano le prime cose da verificare.

    Ma come ti hanno già accennato, uccidere Set mail = Nothing  va bene solo se viene uccisa dopo che hai visualizzato e spedito l'email.

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    Tutto corretto, o almeno mi sembra.

    La cosa strana che non so spiegare è perché come è sempre stato non funziona

       With mail
          .Attachments.Add (conAllegato)
          .Subject = "Invio Foglio Presenze Impiegati - Mese di " & InputBox("Inserisci Mese e Anno")
          .Display
       End With

    e semplicemente spostando l'istruzione .display funziona

       With mail
          .Display      
          .Attachments.Add (conAllegato)
          .Subject = "Invio Foglio Presenze Impiegati - Mese di " & InputBox("Inserisci Mese e Anno")
       End With

    Ho fatto anche la prova a step, e se tolgo l'istruzione per allegare un file funziona di nuovo. Quindi arrivo alla conclusione che dopo aver allegato un file alla mail che sto creando, la “PERDE” e l'istruzione display non trova l'oggetto. Infatti se .display viene prima di .Attachments.Add la mail viene correttamente creata e visualizzata…. boh !!!!

    Qualcuno capisce perché?

       With mail
    '       .Attachments.Add (conAllegato)
           .Subject = "Invio Foglio Presenze Impiegati - Mese di " & InputBox("Inserisci Mese e Anno")
           .Display
       End With
  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    04/07/2023 - StefanoACC ha scritto:


    e semplicemente spostando l'istruzione .display funziona

       With mail
          .Display      
          .Attachments.Add (conAllegato)
          .Subject = "Invio Foglio Presenze Impiegati - Mese di " & InputBox("Inserisci Mese e Anno")
       End With

    Caspiterina che strano… ;-)  

    andrebbe indagato meglio … hai provato a vedere sul supporto Microsoft cosa dicono in merito?

    Un motivo c'è di sicuro. Dopo voglio approfondire perchè non mi è mai capitata una cosa del genere-

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    04/07/2023 - StefanoACC ha scritto:


    Qualcuno capisce perché?

    Microsoft dice che la proprietà Display, essendo solo di lettura, deve essere impostata prima di tutte le altre proprietà.

    Se lo dicono loro io non lo metto in dubbio…. e appunto la giustificazione è che… è solo di lettura

    E le proprietà di sola lettura vanno enumerate come prima cosa e poi le altre.


    Sto' fatto non mi convince e non mi piace… ma se dice che è così bisognerà prenderla per buona come regola.
    Indaga anche tu se trovi il bandolo …. ;-)) 

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    Non mettetevi a ridere ma, frugando tra i post, ho scoperto di aver già avuto lo stesso problema l'anno scorso e lo avevo risolto proprio io….

    Il problema nasce da un componente aggiuntivo COM di Adobe Acrobat attivato su Outlook. Il componente in questione è:

    Adobe Document cloud for Microsoft Outlook - Acrobat 

    L'ho disattivato in Outlook e tutto a ripreso a funzionare perfettamente.

    Evidentemente c'è qualche incompatibilità con VBA che si manifesta solo in presenza di allegato alla mail, indipendentemente che siano pdf o altro (nel mio caso era un file .xlsx).

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    04/07/2023 - StefanoACC ha scritto:


    Non mettetevi a ridere ma, frugando tra i post, ho scoperto di aver già avuto lo stesso problema l'anno scorso e lo avevo risolto proprio io….

    Il problema nasce da un componente aggiuntivo COM di Adobe Acrobat attivato su Outlook. Il componente in questione è:

    Adobe Document cloud for Microsoft Outlook - Acrobat 

    L'ho disattivato in Outlook e tutto a ripreso a funzionare perfettamente.

    Evidentemente c'è qualche incompatibilità con VBA che si manifesta solo in presenza di allegato alla mail, indipendentemente che siano pdf o altro (nel mio caso era un file .xlsx).

    ;-) … Caspita… allora vedi ?  proprio in questi giorni pensavo di disinstallare Adobe Acrobat, mi porta via un sacco di risorse e alla fine sicuramente ne posso anche fare a meno.

    Secondo te quali controindicazioni possono esserci nel disinstallare Adobe Acrobat ?

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    Beh, se non lo usi nessuna controindicazione :-)

    Io lo uso molto, per cui mi limito a disinstallare il componente che da fastidio. Ed al momento, per l'uso che ne faccio io, la mancanza del componente non da controindicazioni.

  • Re: .display - ANOMALIA ISTRUZIONE durante la creazione di una mail da Vba

    05/07/2023 - StefanoACC ha scritto:


    Beh, se non lo usi nessuna controindicazione :-)

    Io lo uso molto, per cui mi limito a disinstallare il componente che da fastidio. Ed al momento, per l'uso che ne faccio io, la mancanza del componente non da controindicazioni.

    Ok… grazie mille per info.

Devi accedere o registrarti per scrivere nel forum
10 risposte