Ten samouczek pokaże Ci, jak wysyłać wiadomości e-mail z programu Excel przez Outlooka za pomocą VBA.
Wysyłanie aktywnego skoroszytu
1234567891011121314151617181920 | Function SendActiveWorkbook(strTo As String, strSubject As String, opcjonalnie strCC As String, opcjonalnie strBody As String) As BooleanPrzy błędzie Wznów DalejAplikacja DimOutlook jako obiektPrzyciemnij mItem jako obiekt'utwórz nowe wystąpienie programu OutlookUstaw appOutlook = CreateObject("Outlook.Application")Ustaw mItem = appOutlook .CreateItem(0)Z mItem.To = strTo.CC = "".Temat = strTemat.Body = strBody.Attachments.Add ActiveWorkbook.FullName'użyj wyślij, aby wysłać natychmiast lub wyświetl, aby pokazać na ekranie.Wyświetl 'lub .WyślijKończyć z„sprzątaj przedmioty”Ustaw mItem = NicUstaw appOutlook = NicKoniec funkcji |
Powyższa funkcja może być wywołana za pomocą poniższej procedury
123456789101112131415 | Sub SendMail()Dim strTo As StringDim strSubject As StringDim strBody As String'wypełnij zmiennestrTo = "[email protected]"strSubject = "Proszę znaleźć załączony plik finansowy"strBody = "jakiś tekst trafia tutaj do treści wiadomości e-mail"'wywołaj funkcję, aby wysłać wiadomość e-mailJeśli SendActiveWorkbook(strTo, strSubject, , strBody) = true toMsgbox "Sukces tworzenia wiadomości e-mail"W przeciwnym razieMsgbox "Utworzenie wiadomości e-mail nie powiodło się!"Zakończ, jeśliNapis końcowy |
Korzystanie z wczesnego wiązania w celu odniesienia się do biblioteki obiektów programu Outlook
Powyższy kod używa późnego wiązania do odwoływania się do obiektu programu Outlook. Możesz dodać odwołanie do programu Excel i zadeklarować aplikację Outlook i element poczty programu Outlook przy użyciu wczesnego wiązania, jeśli jest to preferowane. Wczesne powiązanie sprawia, że kod działa szybciej, ale ogranicza użytkownika, który musiałby mieć na swoim komputerze tę samą wersję pakietu Microsoft Office.
Kliknij menu Narzędzia i Referencje, aby wyświetlić okno dialogowe odniesienia.
Dodaj odwołanie do biblioteki obiektów programu Microsoft Outlook dla używanej wersji pakietu Office.
Następnie możesz zmienić kod, aby bezpośrednio korzystać z tych odwołań.
Wielką zaletą wczesnego wiązania są listy rozwijane, które pokazują obiekty, które są dostępne do użycia!
Wysyłanie pojedynczego arkusza z aktywnego skoroszytu
Aby wysłać pojedynczy arkusz, musisz najpierw utworzyć nowy skoroszyt z istniejącego skoroszytu z tylko tym arkuszem, a następnie wysłać ten arkusz.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | Function SendActiveWorksheet(strTo As String, strSubject As String, opcjonalnie strCC As String, opcjonalnie strBody As String) As BooleanW przypadku błędu Przejdź do eh'deklaruj zmienne do przechowywania wymaganych obiektów'Dim wbDestination As WorkbookDim strDestName jako ciągDim wbSource As WorkbookDim wsSource As WorksheetWygaś aplikację jako obiektWygaś pocztę jako obiektDim strTempName jako ciągDim strTempPath jako ciąg'najpierw utwórz skoroszyt docelowyUstaw wbDestination = Skoroszyty.DodajstrDestName = wbDestination.Name'ustaw skoroszyt i arkusz źródłowyUstaw wbSource = ActiveWorkbookUstaw wsSource = wbSource.ActiveSheet'skopiuj activesheet do nowego skoroszytuwsSource.Copy After: = Skoroszyty(strDestName).Arkusze(1)'zapisz z tymczasową nazwąstrTempPath = Środowisko$("temp") & "\"strTempName = "Lista uzyskana z " & wbSource.Name & ".xlsx"Z wbDestination.SaveAs strTempPath i strTempName'teraz wyślij e-mailem docelowy skoroszytSet OutApp = CreateObject("Outlook.Application")Ustaw OutMail = OutApp.CreateItem(0)Z OutMail.To = strTo.Temat = strTemat.Body = strBody.Attachments.Add wbDestination.FullName'użyj wyślij, aby wysłać natychmiast lub wyświetl, aby pokazać na ekranie.Wyświetlacz 'lub .WyświetlaczKończyć z.Zamknij FałszKończyć z'usuń skoroszyt dołączony do Twojej pocztyZabij strTempPath i strTempName„Oczyść obiekty, aby zwolnić pamięć”Ustaw wbDestination = NicUstaw wbSource = NicUstaw wsSource = NicSet OutMail = NicSet OutApp = NicWyjdź z funkcjiech:MsgBox Err.OpisKoniec funkcji |
i aby uruchomić tę funkcję, możemy utworzyć następującą procedurę
12345678910111213 | Sub SendSheetMail()Dim strTo As StringDim strSubject As StringDim strBody As StringstrTo = "[email protected]"strSubject = "Proszę znaleźć załączony plik finansowy"strBody = "jakiś tekst trafia tutaj do treści wiadomości e-mail"Jeśli SendActiveWorksheet(strTo, strSubject, , strBody) = True ThenMsgBox "Sukces tworzenia wiadomości e-mail"W przeciwnym razieMsgBox "Utworzenie wiadomości e-mail nie powiodło się!"Zakończ, jeśliNapis końcowy |