Creare una mail settimanale con dati estratti da un file excel secondo la regola della data compresa tra un lunedi e il seguente

Anonimo
2023-09-23T16:57:32+00:00

Nel mio ufficio ho la necessita' di inviare ogni lunedi mattina alle 9.00 una email in cui venga inserita una tabella estratta da un foglio excel secondo le date inserite in 2 colonne specifiche e la mail inviata a 3/4 indirizzi email sempre gli stessi.

praticamente secondo le date inserite nelle due colonne indicate vorrei che venisse inviata la tabella come nell'immagine sotto sempre alle stesse 4 persone ogni lunedi.

tenendo conto che le righe da prendere in considerazione sono solo quelle che comprendono le date passate rispetto al lunedi di invio e quelle comprese tra il lunedi di invio e il lunedi successivo. posso anche inviare il file se serve per capire meglio.

Microsoft 365 e Office | Excel | Per il lavoro | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

15 risposte

Ordina per: Più utili
  1. Anonimo
    2023-09-24T20:42:46+00:00

    Ciao Donatella,

    ho salvato il file in OneDrive, spero che funzioni.

    RENOV_VAR RPN tracker.xlsx

    A condizione che, nel mio codice, tu sostituisca i miei nomi di tabella e foglio con i tuoi veri valori, come ad esempio, così:

    Const sFoglio As String = **"RENOV\_VAR SUMMARY"                                                             '<<=== Modifica** 
    
    Const sTabella As String = **"VAR\_Summary3"                                                                         '<<=== Modifica** 
    
    Const sDestinatarie As String = **"PippoAToutlook.com;******@gmail.com"            '<<=== Modifica** 
    
    Const sOggetto As String = **"REPORT"**
    

    il codice suggerito funziona per me!

    A questo proposito, quando sostituisci il nome della tabella, il nome del foglio e gli indirizzi email dei destinatari, cosa succede per te?

    Detto questo, osservando più nel dettaglio il file caricato, sospetto fortemente che tu debba chiarire quali specifiche righe di dati devono essere incluse nell'e-mail spedita. A questo proposito, e partendo dal file caricato, sarebbe di notevole importanza assistenza se dovessi pubblicare un'immagine dei dati email richiesti.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-09-24T19:40:11+00:00

    ho salvato il file in OneDrive, spero che funzioni.

    RENOV_VAR RPN tracker.xlsx

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-09-24T09:07:00+00:00

    Ciao Donatella,

    grazie per la risposta di seguito il link al file, tieni conto che questo file e' una copia senza formule, nell'originale solo le colonne con intestazione blu vengono compilate in questo file, tutte le altre hanno formule per importare informazioni da un altro excel passando da 2 sharepoint sites.

    non so se avere dei dati importati crea problemi, nell'invio devo mettere una tabella con le colonne fino alla P

    VAR_Tracker x invio automatico

    nel frattempo provo a eseguire la procedura che hai inviato sopra.

    Purtroppo non riesco ad accedere al tuo file su Google Drive:

    .

    Ti chiederei gentilmente di caricare il file su Microsoft OneDrive o DropBox.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-09-24T08:57:36+00:00

    Buongiorno Norman,

    grazie per la risposta di seguito il link al file, tieni conto che questo file e' una copia senza formule, nell'originale solo le colonne con intestazione blu vengono compilate in questo file, tutte le altre hanno formule per importare informazioni da un altro excel passando da 2 sharepoint sites.

    non so se avere dei dati importati crea problemi, nell'invio devo mettere una tabella con le colonne fino alla P

    VAR_Tracker x invio automatico

    nel frattempo provo a eseguire la procedura che hai inviato sopra.

    grazie

    Donatella

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2023-09-24T07:38:34+00:00

    Ciao DR_307.

    Nel mio ufficio ho la necessita' di inviare ogni lunedi mattina alle 9.00 una email in cui venga inserita una tabella estratta da un foglio excel secondo le date inserite in 2 colonne specifiche e la mail inviata a 3/4 indirizzi email sempre gli stessi.

    praticamente secondo le date inserite nelle due colonne indicate vorrei che venisse inviata la tabella come nell'immagine sotto sempre alle stesse 4 persone ogni lunedi.

    tenendo conto che le righe da prendere in considerazione sono solo quelle che comprendono le date passate rispetto al lunedi di invio e quelle comprese tra il lunedi di invio e il lunedi successivo. posso anche inviare il file se serve per capire meglio.

    Immagine

    .

    Sarebbe utile vedere un esempio del tuo file e il rapporto desiderato.

    Comunque, in attesa, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

     '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

    Dim WB As Workbook 
    
    Dim SH As Worksheet 
    
    Dim oTabella As ListObject 
    
    Dim Rng As Range 
    
    Const sFoglio As String = **"Foglio1"                                                                                         '<<=== Modifica** 
    
    Const sTabella As String = **"Table1"                                                                                          '<<=== Modifica** 
    
    Const sDestinatarie As String = **"PippoAToutlook.com;******@gmail.com"            '<<=== Modifica** 
    
    Const sOggetto As String = **"REPORT"                        '<<=== Modifica** 
    
    Set WB = ThisWorkbook 
    
    Set SH = WB.Sheets(sFoglio) 
    
    Set oTabella = SH.ListObjects(sTabella) 
    
    With oTabella 
    
        .DataBodyRange.Columns(10).Resize(, 2).NumberFormat = "General" 
    
        With .Range 
    
            .AutoFilter Field:=12, Criteria1:= \_ 
    
                ">=" & CLng(Date), Operator:=xlAnd, Criteria2:="<=" & CLng(Date) + 7 
    
            .AutoFilter Field:=13, Criteria1:= \_ 
    
                ">=" & CLng(Date), Operator:=xlAnd, Criteria2:="<=" & CLng(Date) + 7 
    
            Set Rng = .SpecialCells(xlCellTypeVisible) 
    
        End With 
    
       If Not Rng Is Nothing Then 
    
        Call Invia\_Mail\_HTML(Rng, sDestinatarie, sOggetto) 
    
        Else 
    
            Call MsgBox(Prompt:="Nessun dato trovato per la settimana corrispondente!", \_ 
    
            Buttons:=vbCritical, \_ 
    
            Title:="REPORT") 
    
        End If 
    
        .AutoFilter.ShowAllData 
    
    End With 
    

    End Sub

    '-------->>

    Public Sub Invia_Mail_HTML(oRng As Range, sRecipient As String, sSubject As String)

    Dim oOutlook As Object 
    
    Dim oMail As Object 
    
    With Application 
    
        .EnableEvents = False 
    
        .ScreenUpdating = False 
    
    End With 
    
    Set oOutlook = CreateObject("Outlook.Application") 
    
    Set oMail = oOutlook.CreateItem(0) 
    
    On Error Resume Next 
    
    With oMail 
    
        .To = sRecipient 
    
        .CC = "" 
    
        .BCC = "" 
    
        .Subject = sSubject 
    
        .HTMLBody = RangetoHTML(oRng) 
    
        .Display  '\\ .Send 
    
    End With 
    
    On Error GoTo 0 
    
    With Application 
    
        .EnableEvents = True 
    
        .ScreenUpdating = True 
    
    End With 
    
    Set oMail = Nothing 
    
    Set oOutlook = Nothing 
    

    End Sub

    '--------->>

    Public Function RangetoHTML(Rng As Range)

    Dim fso As Object

    Dim ts As Object

    Dim TempFile As String

    Dim TempWB As Workbook

    TempFile = Environ$("temp") & "" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"

    'Copy the range and create a new workbook to past the data in

    Rng.Copy

    Set TempWB = Workbooks.Add(1)

    With TempWB.Sheets(1)

    .Cells(1).PasteSpecial Paste:=8

    .Cells(1).PasteSpecial xlPasteValues, , False, False

    .Cells(1).PasteSpecial xlPasteFormats, , False, False

    .Cells(1).Select

    Application.CutCopyMode = False

    On Error Resume Next

    .DrawingObjects.Visible = True

    .DrawingObjects.Delete

    On Error GoTo 0

    End With

    'Publish the sheet to a htm file

    With TempWB.PublishObjects.Add( _

    SourceType:=xlSourceRange, _

    FileName:=TempFile, _

    Sheet:=TempWB.Sheets(1).Name, _

    Source:=TempWB.Sheets(1).UsedRange.Address, _

    HtmlType:=xlHtmlStatic)

    .Publish (True)

    End With

    'Read all data from the htm file into RangetoHTML

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)

    RangetoHTML = ts.readall

    ts.Close

    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _

    "align=left x:publishsource=")

    'Close TempWB

    TempWB.Close savechanges:=False

    'Delete the htm file we used in this function

    Kill TempFile

    Set ts = Nothing

    Set fso = Nothing

    Set TempWB = Nothing

    End Function

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm
    • Alt+F8 per aprire la finestra di gestione delle macro
    • Seleziona Tester
    • Esegui

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento