Outlook mail in functie de data + notificare confirmare

Închis
Sima Alina
Mesaje: 13
Membru din: Joi Iun 07, 2018 2:15 pm

Outlook mail in functie de data + notificare confirmare

Mesaj de Sima Alina » Mie Iul 25, 2018 2:47 pm

Buna ziua,

Va rog sa-mi spuneti cum ar trebui sa arate codul vba in cazul in care vreau sa trimit notificari e-mail Outlook din vba cu 5 zile inainte sa ajung la data din coloana C.

As vrea sa am un userform cu 3 butoane (preview, delete, send), iar daca dau click preview sa-mi afiseze mailurile care intrunesc conditia de data (ex.start date 01.09.2018, iar la desciderea fisierului e indeplinita conditia start date - 5). Daca mailul e ok sa dau send, daca nu sa dau delete.

Mailul sa fie tranmis catre adresa din coloana D de pe linia care intruneste conditia de data
Subiectul mailului sa fie format din numele proiectului din coloana B + start date din coloana C
Continutul mailului:
sa se adreseze persoanei din coloana B
("Buna ziua" Popescu Gigel,
Start date pentru proiectul "din coloana A" este "data din coloana C".
Te rog sa te asiguri ca imi transmiti detaliile.
Multumesc!)

Iar dupa transmiterea mailului, in coloana E sa apara data si ora transmiterii mesajului.

Tabelullui i se vor adauga periodic noi linii, deci ar trebui sa identifice automat ultima linie pe care aplica conditia.

Am incercat coduri de pe site-uri, tutoriale, dar nu am reusit.
Atasez un draft al fisierului, fisierul meu are mai multe coloane si linii.

Multumesc anticipat pentru suport.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Outlook mail in functie de data + notificare confirmare

Mesaj de TudyBTH » Mie Iul 25, 2018 4:59 pm

Buna,

Singura intrebare la care va pot raspune concret este "...cum ar trebui sa arate codul vba..."(?). Raspunsul este "Destul de stufos!"
Timpul nu imi permite sa va construiesc o solutie functionala pentru ceea ce doriti si este putin probabil ca sa gasiti un coleg pe forum care sa o construiasca "cap-coada". Necesita ceva timp.

Va pot insa ajuta cu indrumari, sfaturi si chiar secvente de cod.
Deci, daca va hotarati sa realizati dv acest proiect, postati ceea ce ati facut (atasati o copie a fisierului pe care lucrati, fara sa contina date sensibile) si descrieti concret problema pe care o intampinati.
Luat asa "pe bucatele" veti primi mult mai rapid sprijin pe forum.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

Sima Alina
Mesaje: 13
Membru din: Joi Iun 07, 2018 2:15 pm

Re: Outlook mail in functie de data + notificare confirmare

Mesaj de Sima Alina » Lun Iul 30, 2018 2:29 pm

Buna,

Am scris codul si functioneaza (l-am setat doar pt butonul display mails), dar intampin o problema: pe coloanele 40 si 91 am date calendaristice rezultat al unor formule care utilizeaza alte celule, uneori am eroare ca rezultat si as vrea ca atunci cand gaseste pe coloana 91 eroare sa nu-mi creeze acel mail si sa mearga mai departe la celulele din coloana 91 valide. Unde ar trebui sa-i spun "On error resume next" ?.

Multumesc!

Cod: Selectaţi tot

Sub ipreview()

Dim AppOL As Object
Dim miOL As Object
Dim lastRow As Long
Dim i As Integer
Dim ws As Worksheet
Dim wbk As Workbook
Dim eSubject As String
Dim eBody As String
Dim toList As String
Dim signOL As String
Dim madmaster As Date


With Application

.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False

End With


Set ws = ActiveWorkbook.Sheets("Technique")
lastRow = ws.Cells(Rows.Count, "CL").End(xlUp).Row

On Error Resume Next


Set AppOL = GetObject("Outlook.Application")

If Err.Number <> 0 Then

Set AppOL = CreateObject("Outlook.Application")

End If

On Error GoTo 0

On Error Resume Next




For i = 1 To lastRow
 
If ws.Cells(i, 91).Value = Date Then

If Trim(ws.Cells(i, 90).Value) Like "*?@?*.?*" Then


madmaster = ws.Cells(i, 40)


toList = ws.Cells(i, 90)
eSubject = "Project " & ws.Cells(i, 6) & " is approaching"
eBody = "Dear " & ws.Cells(i, 12) & "," & vbCrLf & vbCrLf & "The translation due date of your project " & ws.Cells(i, 6) & " (" & ws.Cells(i, 13) & ") " & "is: " & madmaster & vbCrLf & vbCrLf & "Thank you for providing the Master module ASAP." 

Set miOL = AppOL.CreateItem(0)

With miOL

.To = toList
.Importance = 0
.Subject = eSubject
.Body = eBody
.ReadReceiptRequested = False
.Display

 
End With


End If

End If




Next i

Set AppOL = Nothing
Set miOL = Nothing

End Sub


H2SO4
Mesaje: 135
Membru din: Mar Apr 19, 2016 12:50 pm

Re: Outlook mail in functie de data + notificare confirmare

Mesaj de H2SO4 » Lun Iul 30, 2018 3:13 pm

Buna,

Nu m-am uitat si nu am analizat codul folosit dar...
Inainte de a folosi "On error resume next" - care va trece de unele erori, dar nu vei sti daca ai trimis toate acele mail-uri - e mai bine sa verifici acele formule, poate rezultatul lor este TEXT si nu un numar (datele calendaristice in excel sunt numere...). ca sfat, incearca sa refaci acele formule in asa fel ca rezultatul sa fie un numar. De multe ori "merge" sa (inmultesti cu/imparti la 1, sau sa aduni un zero etc. daca doreti ataseaza acel fisier sau macar formulele.
“Tell me and I forget, teach me and I may remember, involve me and I learn.”

Sima Alina
Mesaje: 13
Membru din: Joi Iun 07, 2018 2:15 pm

Re: Outlook mail in functie de data + notificare confirmare

Mesaj de Sima Alina » Lun Iul 30, 2018 3:35 pm

Multumesc de sfat, insa nu e nimic in neregula atunci cand am eroare pe coloana 91 (anumite proiect sunt in stand by si a fost stearsa informatia din celulele din care formula isi ia datele. Eu vreau sa le lase cu eroare, dar sa nu fie luate in considerare celulele din coloana 91 care au valoare "eroare" atunci cand sunt create mailurile. Pentru ca eu astazi as avea pe coloana 91, doua celule care indeplinesc conditia = today, insa cand rulez, imi creaza mailuri si pentru celulele cu error si sunt desul de multe.

Cum scriu asta in cod?


Multumesc!

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”