Condividi:        

creare email da XL con due fogli lavoro in formato PDF o XL

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

creare email da XL con due fogli lavoro in formato PDF o XL

Postdi Making » 25/08/21 09:40

Ciao,
mi potete aiutare a creare una macro che allega due fogli della stessa cartella in XL in formato PDF (esempio. foglio1 e foglio2) e li manda via email? Mi servirebbe anche la versione della macro che anzichè inviarli in PDF li allega come fogli di lavoro ma senza le formule (solo valori).

Grazie per l'aiuto.
Making
Utente Junior
 
Post: 49
Iscritto il: 22/07/15 12:50

Sponsor
 

Re: creare email da XL con due fogli lavoro in formato PDF o

Postdi Anthony47 » 25/08/21 14:18

Ad esempio questa macro:
Codice: Seleziona tutto
 Sub SendF1F2()
Dim shTSend, I As Long, fTAttach As String
Dim oApp As Object, oMail As Object, mDest As String
'
shTSend = Array("Sheet2", "Foglio1")            '<<< I Fogli da inviare come allegato, anche piu' di 2
fTAttach = "Allegato_"                          '<<< Il nome per il file da inviare
mDest = "account@Dominio.ZZ"                    '<<< destinatario email
'
'Crea file da allegare:
Sheets(shTSend(1)).Copy
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
ActiveSheet.Name = ThisWorkbook.Sheets(shTSend(I)).Name
For I = 1 To UBound(shTSend)
    ThisWorkbook.Sheets(shTSend(I)).Copy After:=Workbooks(Workbooks.Count).Sheets(1)
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
    ActiveSheet.Name = ThisWorkbook.Sheets(shTSend(I)).Name
Next I
fTAttach = ThisWorkbook.Path & "\" & fTAttach & Format(Now, "yyyy-mm-dd_hh-mm-ss") & ".xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=fTAttach
Application.DisplayAlerts = True
ActiveWorkbook.Close False
'Crea email e invia
    Set oApp = CreateObject("Outlook.Application")
    Set oMail = oApp.CreateItem(0)
    oMail.To = mDest
    oMail.Subject = "Invio non so che cosa"
    oMail.Body = "Buongiorno" & vbCrLf & "In allegato il documento di vostra competenza"
    oMail.Attachments.Add fTAttach
    oMail.Display
'    oMail.Send
Application.Wait (Now + TimeValue("0:00:02"))
Set oMail = Nothing
Set oApp = Nothing
End Sub

Va inserito in un modulo standard nel progetto vba del file di partenza.
Le righe marcate <<< vanno personalizzate come da commento.

La macro crea un nuovo file excel contenente i fogli dichiarati, nella stessa directory del file di partenza, gli assegna un nome composto da una radice e dal suffisso in formato yyyy-mm-dd_hh-mm-ss.xlsx, lo salva e poi lo allega alla email.

La macro si completa con l'istruzione Display, che visualizza l'email prima dell'invio manuale.
Quando sei certo del risultato e' ok allora puoi eliminare l'istruzione "Display" e abilitare la "Send" (ora "commentata", quindi disabilitata)

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare email da XL con due fogli lavoro in formato PDF o

Postdi Making » 26/08/21 11:20

perfetto!

Riesci anche a dirmi come fare per inviare via email attraverso una macro uno o più fogli della cartella XL ma in formato PDF e separati?
Grazie
Making
Utente Junior
 
Post: 49
Iscritto il: 22/07/15 12:50

Re: creare email da XL con due fogli lavoro in formato PDF o

Postdi Anthony47 » 26/08/21 15:23

In questo caso devi cambiare totalmente la fase di creazione dei file e cambiare leggermente la fase di creazione della mail.
Ad esempio:
Codice: Seleziona tutto
Sub SendF1F2Pdf()
Dim shTSend, I As Long, fTAttach As String
Dim oApp As Object, oMail As Object, mDest As String
Dim aNames(), pdfName As String, cNaame As String
'
shTSend = Array("Sheet2", "Foglio1", "Foglio3") '<<< I Fogli da inviare come allegato
fTAttach = "Allegato_"                          '<<< Il nome per il file da inviare
mDest = "email@dominio.zz"                      '<<< destinatario email
'
'Crea file da allegare:
ReDim aNames(0 To UBound(shTSend))
pdfName = ThisWorkbook.Path & "\" & fTAttach & Format(Now, "yyyy-mm-dd_hh-mm-ss") & "_##.pdf"
For I = 0 To UBound(shTSend)
    aNames(I) = Replace(pdfName, "##", Chr(65 + I), , , vbTextCompare)
    ThisWorkbook.Sheets(shTSend(I)).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=aNames(I), OpenAfterPublish:=False
Next I
'
'Crea email e invia
    Set oApp = CreateObject("Outlook.Application")
    Set oMail = oApp.CreateItem(0)
    oMail.To = mDest
    oMail.Subject = "Invio non so che cosa"
    oMail.Body = "Buongiorno" & vbCrLf & "In allegato il documento di vostra competenza"
    For I = 0 To UBound(aNames)
        oMail.Attachments.Add aNames(I)
    Next I
    oMail.Display
'    oMail.Send
Application.Wait (Now + TimeValue("0:00:02"))
Set oMail = Nothing
Set oApp = Nothing
End Sub


La macro crea tanti file pdf per ogni foglo dichiarato, nella stessa directory del file di partenza, gli assegna un nome composto da una radice e da un suffisso in formato aaaa.mm-gg_hh-mm-ss_#.pdf; poi li allega alla email.
Il # del nome file e' sostituito da A/B/C...

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

Re: creare email da XL con due fogli lavoro in formato PDF o

Postdi Making » 26/08/21 18:33

Ottimo, l'unica cosa che manca è che il nome dei due Allegati dev'essere lo stesso del foglio e non "Allegato_". Quindi:
foglio1 diventa semplicemente Foglio1.pdf e Foglio2 diventa Foglio2.pdf

Come faccio?
Making
Utente Junior
 
Post: 49
Iscritto il: 22/07/15 12:50

Re: creare email da XL con due fogli lavoro in formato PDF o

Postdi Anthony47 » 27/08/21 11:46

Allora modifica questa istruzione:
Codice: Seleziona tutto
fTAttach = "@@@@_"                              '<<< Il nome per il file da inviare

e poi quest'altra:
Codice: Seleziona tutto
    aNames(I) = Replace(Replace(pdfName, "##", Chr(65 + I), , , vbTextCompare), "@@@@", shTSend(I), , , vbTextCompare)


Non eliminerei l'estensione data+orario perche' così facendo complicheresti il tracciamento di che cosa hai fatto il giorno 1 e che cosa il giorno 2.

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

Re: creare email da XL con due fogli lavoro in formato PDF o

Postdi Making » 27/08/21 15:34

Grazie, tutto ok! L'estensione data e ora l'ho eliminata perché non mi serve.
Making
Utente Junior
 
Post: 49
Iscritto il: 22/07/15 12:50


Torna a Applicazioni Office Windows


Topic correlati a "creare email da XL con due fogli lavoro in formato PDF o XL":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti