Cześć,
mam prośbę czy jest osoba, która by mi pomogła z napisaniem kodu w VBA do automatycznego wysyłania maili Outlookiem? Mam jeden plik, do którego dokładam wiersze z danymi i na tej podstawie chce wysłać maila z automatycznie wypełnionymi danymi już w mailu, które przed chwilą wpisałem w tym wierszu. Tak, żeby w odpowiednim miejscu zaciągało dane z odpowiednich kolumn w wierszu który zaznaczyłem. Chciałbym, żeby mail adresata zaciągnął po nazwie dostawcy z tabeli, którego w danym wierszu wpisze (ze screena z kolumny E) i wyszuka go w innym drugim arkuszu, gdzie przy każdej nazwie dostawcy mam wypisane ich maile. Ten drugi arkusz nazywa się "Lista dostawców", w kolumnie C mam nazwy dostawców a w kolumnie K ich emaile do zaciągnięcia w przypadku gdy ich nazwa wystąpi. W Temacie chciałbym, żeby zaciągało dane z kolumny "Typ zgłoszenia"(kolumna J) dla danego wiersza oraz z kolumny "Numer zamówienia"(kolumna D). W tekście byłoby tak samo, tylko żeby zaciągało więcej kolumn takich jak "Numer zamówienia", "Ilość", "Partia", "Data", a pod tym "Opis problemu", "Czas trwania". Przesyłam screena tabeli jak to wygląda w arkuszu. Sama tabela ma dużo więcej wierszy wypełnionych, ta jest przykładowa. Dodaje ręcznie kolejne wartości pod ostatnim wypełnionym wierszem.
Sam napisałem prosty kod ale wysyła maile do wszystkich osób, a nie tylko do odpowiednich osób w zależności od dostawcy i automatycznie dane się nie zaciągają z kolumn w danym wierszu, dlatego bardzo bym prosił o wszelaką pomoc i byłbym bardzo wdzięczny.
EDIT:
Udało mi się zrobić żeby wysyłało do ostatniego wiersza, jednak nie wiem jak zrobić, żeby ten email był zaciągany na podstawie nazwy w głównym arkuszu i wyszukał ta nazwę w innym arkuszu i dla danej nazwy wyciągnął maila. Oraz czy może znajdywać ostatnią używany wiersz w arkuszu dane po 2 kolumnie a nie po 1, ponieważ nieraz w 1 kolumnie mam puste i nie ma żadnych wartości przez co nie bierze tego jako ostatni wiersz.
Sub WyslijMaile()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim LastRow As Long
Set OutlookApp = CreateObject("Outlook.Application")
LastRow = Sheets("2023").Cells(Rows.Count, 1).End(xlUp).Row
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = Sheets("2023").Cells(LastRow, 5).Value
.Subject = Sheets("2023").Cells(LastRow, 5).Value & Chr(58) & " " & Sheets("2023").Cells(LastRow, 5).Value
.Body = Sheets("2023").Cells(LastRow, 5).Value & Chr(47) & Sheets("2023").Cells(LastRow, 9) & Chr(47) & Sheets("2023").Cells(LastRow, 10) & Chr(47) & Sheets("2023").Cells(LastRow, 2) & vbCrLf & _
Sheets("2023").Cells(LastRow, 6) & vbCrLf & _
Sheets("2023").Cells(LastRow, 9) & vbCrLf & vbCrLf & _
"Proszę o analizę oraz CAPA"
.Display
End With
On Error GoTo 0
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
mam prośbę czy jest osoba, która by mi pomogła z napisaniem kodu w VBA do automatycznego wysyłania maili Outlookiem? Mam jeden plik, do którego dokładam wiersze z danymi i na tej podstawie chce wysłać maila z automatycznie wypełnionymi danymi już w mailu, które przed chwilą wpisałem w tym wierszu. Tak, żeby w odpowiednim miejscu zaciągało dane z odpowiednich kolumn w wierszu który zaznaczyłem. Chciałbym, żeby mail adresata zaciągnął po nazwie dostawcy z tabeli, którego w danym wierszu wpisze (ze screena z kolumny E) i wyszuka go w innym drugim arkuszu, gdzie przy każdej nazwie dostawcy mam wypisane ich maile. Ten drugi arkusz nazywa się "Lista dostawców", w kolumnie C mam nazwy dostawców a w kolumnie K ich emaile do zaciągnięcia w przypadku gdy ich nazwa wystąpi. W Temacie chciałbym, żeby zaciągało dane z kolumny "Typ zgłoszenia"(kolumna J) dla danego wiersza oraz z kolumny "Numer zamówienia"(kolumna D). W tekście byłoby tak samo, tylko żeby zaciągało więcej kolumn takich jak "Numer zamówienia", "Ilość", "Partia", "Data", a pod tym "Opis problemu", "Czas trwania". Przesyłam screena tabeli jak to wygląda w arkuszu. Sama tabela ma dużo więcej wierszy wypełnionych, ta jest przykładowa. Dodaje ręcznie kolejne wartości pod ostatnim wypełnionym wierszem.
Sam napisałem prosty kod ale wysyła maile do wszystkich osób, a nie tylko do odpowiednich osób w zależności od dostawcy i automatycznie dane się nie zaciągają z kolumn w danym wierszu, dlatego bardzo bym prosił o wszelaką pomoc i byłbym bardzo wdzięczny.
EDIT:
Udało mi się zrobić żeby wysyłało do ostatniego wiersza, jednak nie wiem jak zrobić, żeby ten email był zaciągany na podstawie nazwy w głównym arkuszu i wyszukał ta nazwę w innym arkuszu i dla danej nazwy wyciągnął maila. Oraz czy może znajdywać ostatnią używany wiersz w arkuszu dane po 2 kolumnie a nie po 1, ponieważ nieraz w 1 kolumnie mam puste i nie ma żadnych wartości przez co nie bierze tego jako ostatni wiersz.
Sub WyslijMaile()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim LastRow As Long
Set OutlookApp = CreateObject("Outlook.Application")
LastRow = Sheets("2023").Cells(Rows.Count, 1).End(xlUp).Row
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = Sheets("2023").Cells(LastRow, 5).Value
.Subject = Sheets("2023").Cells(LastRow, 5).Value & Chr(58) & " " & Sheets("2023").Cells(LastRow, 5).Value
.Body = Sheets("2023").Cells(LastRow, 5).Value & Chr(47) & Sheets("2023").Cells(LastRow, 9) & Chr(47) & Sheets("2023").Cells(LastRow, 10) & Chr(47) & Sheets("2023").Cells(LastRow, 2) & vbCrLf & _
Sheets("2023").Cells(LastRow, 6) & vbCrLf & _
Sheets("2023").Cells(LastRow, 9) & vbCrLf & vbCrLf & _
"Proszę o analizę oraz CAPA"
.Display
End With
On Error GoTo 0
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub