LoginRegistrati
Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
  • Autore
    Articoli
  • #26155 Risposta

    DanieleS
    Partecipante

      Buonasera, avevo iniziato un post relativo ad un problema ma è sopraggiunto un'altra difficoltà durante l'esecuzione di una macro su macchine in cui è installato office 2013 e 2010.

      Utilizzo questo codice che mi permette di inviare, tramite outlook, una mail con pdf allegato:

      sub PDFEmailPrint()
      Dim MyFilePath As String
      Dim MyFileName As String
      Dim OutlookApp As Outlook.Application
      Dim MItem As Outlook.MailItem
      Dim EmailAddress As String
      Dim EmailCc As String
      Dim EmailSubject As String
      Dim Msg As String
      Application.ScreenUpdating = False
      Worksheets("FOGLIO DA STAMPARE").Activate
      'Specify email address, email subject, and a brief message
      EmailAddress = "" 'mail a cui inviare
      EmailCc = ""
      EmailSubject = Format(Now, "DD_MMM_YY") & "_" & Range("B60") 'range = nome pv
      Msg = "Foglio incasso del punto vendita: " & Range("b60") & " del " & Format(Now, "DD_MMM_YY HH:MM:SS") 'range=nome pv
      MyFilePath = ThisWorkbook.Path & ""
      MyFileName = "SERALE_" & Format(Now, "DD_MMM_YY") & "_" & Range("b60") 'range = nome pv
      Range("A1:K85").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
                  MyFilePath & MyFileName, Quality:=xlQualityStandard, _
                  IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
      Set OutlookApp = New Outlook.Application
      'Send out the email
      Set MItem = OutlookApp.CreateItem(olMailItem)
      With MItem
          .To = EmailAddress
          .Cc = EmailCc
          .Subject = EmailSubject
          .Body = Msg
          .Attachments.Add MyFilePath & MyFileName & ".PDF"
          .DeleteAfterSubmit = True
          .Send
      End With
      Set OutlookApp = Nothing
      MsgBox "La stampa partirà a breve!"
      Kill MyFilePath & MyFileName & ".PDF"
      Application.ScreenUpdating = True
      
      
          ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
              :=True, IgnorePrintAreas:=False
      
      
      End Sub

      Questo codice funziona perfettamente su macchine con office 2016 e 2019.

      Con office 2013 e 2010, questo codice non funziona in quanto mancano i seguenti riferimenti: 
      MANCA: Microsoft Outlook 16.0 Object Library
      MANCA: Microsoft Outlook View Control

      Come posso risolvere ? Come posso reperire questi riferimenti mancanti?

      Grazie

      #26163 Risposta
      patel
      patel
      Moderatore
        39 pts

        sulle macchine col 2010 c'è outlook installato ?

        #26172 Risposta

        Daniele

          Si c’è installato Outloolk, funzionante 

          #26175 Risposta
          albatros54
          albatros54
          Moderatore
            51 pts

            copia questa routine in un modulo di vba e la lanci, dopo lancia la "sub PDFEmailPrint()", vedi se ti da sempre errore, se l'errore persiste è perche ti mancano le librerie in Excel.

            Sub Add_VBE_ObjectLibrary()
            
            On Error Resume Next
            
            
            ActiveWorkbook.VBProject.References.AddFromGuid "{0006F062-0000-0000-C000-000000000046}", 0, 0
            ActiveWorkbook.VBProject.References.AddFromGuid "{00062FFF-0000-0000-C000-000000000046}", 0, 0
            End Sub

             


            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #26177 Risposta

            DanieleS
            Partecipante

              Grazie, provo anche la tua soluzione.
              Un possibile problema, leggendo in giro, potrebbe essere l'early binding.
              Per cui sto modificando così:

              `Sub PDFEmailPrint()
              ...
              Dim OutlookApp As Object
              Dim MItem As Outlook.MailItem
              Dim EmailAddress As String
              Dim EmailCc As String
              Dim EmailSubject As String
              Dim Msg As String
              Set OutlookApp = CreateObject("Outlook.Application")
              
              ....
              
              end sub`

              Quindi dichiarare la variabile come oggetto.

              Provo in entrambi i casi e ti faccio sapere!

              #26229 Risposta

              DanieleS
              Partecipante

                Magari può essere utile a qualcuno.
                Ho risolto dichiarando le variabili come oggetto, quindi:

                Dim OutlookApp As Object
                Dim MItem As Object
                Const olMailItem As Long = 0
                Set OutlookApp = CreateObject("Outlook.Application")
                

                 

                 

                poi il corpo del codice

                `Set MItem = OutlookApp.CreateItem(olMailItem)
                `

                Dopo aver fatto queste modifiche mi dava sempre errore; quindi ho tolto le spunte in Riferimenti, dei riferimenti che mancavano, e sembra funzionare.

              LoginRegistrati
              Stai vedendo 6 articoli - dal 1 a 6 (di 6 totali)
              Rispondi a: Mancano riferimenti
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni:



              vecchio frac - 2750 risposte

              albatros54
              albatros54 - 996 risposte

              patel
              patel - 889 risposte

              Marius44
              Marius44 - 766 risposte

              Luca73
              Luca73 - 652 risposte