VBA Skicka e -post från Excel via Outlook

Denna handledning visar dig hur du skickar e -post från Excel via Outlook med VBA.

Skickar den aktiva arbetsboken

1234567891011121314151617181920 Funktion SendActiveWorkbook (strTo As String, strSubject As String, Valfri strCC As String, Valfri strBody As String) Som BooleanVid fel Återuppta nästaDim appOutlook Som objektDim mItem som objekt'skapa en ny instans av OutlookAnge appOutlook = CreateObject ("Outlook.Application")Ange mItem = appOutlook .CreateItem (0)Med mItem.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Add ActiveWorkbook.FullName'använd skicka för att skicka omedelbart eller visa för att visa på skärmen.Display 'eller .SendSluta med'städa upp föremålAnge mItem = IngentingStäll in appOutlook = IngentingAvsluta funktion

Funktionen ovan kan kallas med proceduren nedan

123456789101112131415 Sub SendMail ()Dim strTo Som strängDim strSubject As StringDim strBody As String'fylla i variablerstrTo = "[email protected]"strSubject = "Hitta en finansfil bifogad"strBody = "lite text går här för e -postens brödtext"'ring funktionen för att skicka e -postmeddelandetOm SendActiveWorkbook (strTo, strSubject,, strBody) = true dåMsgbox "Skapande av e -post lyckades"AnnanMsgbox "Skapandet av e -post misslyckades!"Avsluta omAvsluta Sub

Använda Early Binding för att hänvisa till Outlook Object Library

Koden ovan använder sen bindning för att hänvisa till Outlook -objektet. Du kan lägga till en referens till Excel och deklarera Outlook -programmet och Outlook Mail -objekt med hjälp av tidig bindning om så önskas. Tidig bindning gör att koden körs snabbare, men begränsar dig eftersom användaren skulle behöva ha samma version av Microsoft Office på sin dator.

Klicka på Verktyg -menyn och Referenser för att visa referensdialogrutan.

Lägg till en referens till Microsoft Outlook Object Library för den version av Office som du använder.

Du kan sedan ändra din kod för att använda dessa referenser direkt.

En stor fördel med tidig bindning är rullgardinsmenyerna som visar de objekt som är tillgängliga att använda!

Skicka ett enda blad från den aktiva arbetsboken

För att skicka ett enda ark måste du först skapa en ny arbetsbok från den befintliga arbetsboken med bara det bladet i och sedan skicka det.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 Funktion SendActiveWorksheet (strTo As String, strSubject As String, Valfri strCC As String, Valfri strBody As String) Som BooleanPå fel GoTo eh'deklarera variabler för att hålla de objekt som krävsDim wbDestination As WorkbookDim strDestName som strängDim wbSource As arbetsbokDim wsSource Som kalkylbladDim OutApp som objektDim OutMail som objektDim strTempName som strängDim strTempPath som sträng'skapa först målarbetsbokAnge wbDestination = Workbooks.AddstrDestName = wbDestination.Name'ställ in källarbetsboken och arketAnge wbSource = ActiveWorkbookAnge wsSource = wbSource.ActiveSheet'kopiera det aktiva bladet till den nya arbetsbokenwsSource.Copy After: = Workbooks (strDestName) .Sheets (1)'spara med ett tillfälligt namnstrTempPath = Miljö $ ("temp") & "\"strTempName = "Lista erhållen från" & wbSource.Name & ".xlsx"Med wbDestination.SaveAs strTempPath & strTempName'e -posta nu målarbetsbokenAnge OutApp = CreateObject ("Outlook.Application")Ange OutMail = OutApp.CreateItem (0)Med OutMail.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullName'använd skicka för att skicka omedelbart eller visa för att visa på skärmen.Display 'eller .DisplaySluta med.Stäng FalseSluta med'ta bort tillfällig arbetsbok som du har bifogat din e -postDöda strTempPath & strTempName'städa upp föremålen för att frigöra minnetAnge wbDestination = IngentingAnge wbSource = IngentingAnge wsSource = IngentingSet OutMail = IngentingSet OutApp = IngentingAvsluta funktionva:MsgBox Err.BeskrivningAvsluta funktion

och för att köra denna funktion kan vi skapa följande procedur

12345678910111213 Sub SendSheetMail ()Dim strTo Som strängDim strSubject As StringDim strBody As StringstrTo = "[email protected]"strSubject = "Hitta en finansfil bifogad"strBody = "lite text går här för e -postens brödtext"If SendActiveWorksheet (strTo, strSubject,, strBody) = True ThenMsgBox "Framställning av e -post lyckad"AnnanMsgBox "Det gick inte att skapa e -post!"Avsluta omAvsluta Sub

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave