Denne vejledning viser dig, hvordan du sender e -mails fra Excel via Outlook ved hjælp af VBA.
Afsendelse af den aktive projektmappe
1234567891011121314151617181920 | Funktion SendActiveWorkbook (strTo As String, strSubject As String, Valgfri strCC As String, Valgfri strBody As String) Som BooleanVed fejl Genoptag næsteDim appOutlook som objektDim mItem som objekt'opret en ny forekomst af OutlookIndstil appOutlook = CreateObject ("Outlook.Application")Indstil mItem = appOutlook .CreateItem (0)Med mItem.To = strTo.CC = "".Subject = strSubject.Body = strBody.Attachments.Add ActiveWorkbook.FullName'brug send til at sende med det samme, eller vis det for at blive vist på skærmen.Display 'eller .SendAfslut med'rydde op i genstandeIndstil mItem = IntetIndstil appOutlook = IntetAfslut funktion |
Funktionen ovenfor kan kaldes ved hjælp af nedenstående procedure
123456789101112131415 | Sub SendMail ()Dim strTo Som strengDim strSubject As StringDim strBody As String'udfyld variablerstrTo = "[email protected]"strSubject = "Find vedhæftet finansfil"strBody = "noget tekst går her til e -mailens brødtekst"'ring til funktionen for at sende e -mailenHvis SendActiveWorkbook (strTo, strSubject,, strBody) = sandt derefterMsgbox "Oprettelse af e -mail lykkedes"AndetMsgbox "Oprettelse af e -mail mislykkedes!"Afslut HvisAfslut Sub |
Brug af tidlig binding til at referere til Outlook Object Library
Koden ovenfor bruger sen binding til at referere til Outlook -objektet. Du kan tilføje en reference til Excel og erklære Outlook -applikationen og Outlook Mail -elementet ved hjælp af Tidlig binding, hvis det foretrækkes. Tidlig binding får koden til at køre hurtigere, men begrænser dig, da brugeren skal have den samme version af Microsoft Office på deres pc.
Klik på menuen Værktøjer og Referencer for at få vist referencedialogboksen.
Tilføj en reference til Microsoft Outlook Object Library for den version af Office, du bruger.
Du kan derefter ændre din kode for at bruge disse referencer direkte.
En stor fordel ved tidlig binding er rullelisterne, der viser dig de objekter, der er tilgængelige til brug!
Sender et enkelt ark fra den aktive projektmappe
Hvis du vil sende et enkelt ark, skal du først oprette en ny projektmappe fra den eksisterende projektmappe med netop det ark i den og derefter sende den.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | Funktion SendActiveWorksheet (strTo som streng, strSubject som streng, valgfri strCC som streng, valgfri strBody som streng) Som boolskVed fejl GoTo eh'erklære variabler for at holde de nødvendige objekterDim wbDestination som projektmappeDim strDestName som strengDim wbSource som projektmappeDim wsSource som regnearkDim OutApp som objektDim OutMail som objektDim strTempName som strengDim strTempPath som streng'opret først destinationsarbejdsbogIndstil wbDestination = Workbooks.AddstrDestName = wbDestination.Name'indstil kildearbejdsbogen og arketIndstil wbSource = ActiveWorkbookIndstil wsSource = wbSource.ActiveSheet'kopier det aktive ark til den nye projektmappewsSource.Copy After: = Workbooks (strDestName) .Sheets (1)'gem med et midlertidigt navnstrTempPath = Miljø $ ("temp") & "\"strTempName = "Liste hentet fra" & wbSource.Name & ".xlsx"Med wbDestination.SaveAs strTempPath & strTempName'e -mail nu destinationsarbejdsbogenIndstil OutApp = CreateObject ("Outlook.Application")Indstil OutMail = OutApp.CreateItem (0)Med OutMail.To = strTo.Subject = strSubject.Body = strBody.Attachments.Add wbDestination.FullName'brug send til at sende med det samme, eller vis det for at blive vist på skærmen.Display 'eller .DisplayAfslut med. Luk FalskAfslut med'slet midlertidig projektmappe, som du har vedhæftet din mailDræb strTempPath & strTempName'ryd op i objekterne for at frigive hukommelsenIndstil wbDestination = IntetIndstil wbSource = IntetIndstil wsSource = IntetSet OutMail = IntetIndstil OutApp = IntetAfslut funktioneh:MsgBox Err.BeskrivelseAfslut funktion |
og for at køre denne funktion kan vi oprette følgende procedure
12345678910111213 | Sub SendSheetMail ()Dim strTo Som strengDim strSubject As StringDim strBody As StringstrTo = "[email protected]"strSubject = "Find vedhæftet finansfil"strBody = "noget tekst går her til e -mailens brødtekst"Hvis SendActiveWorksheet (strTo, strSubject,, strBody) = True ThenMsgBox "Succes med oprettelse af e -mail"AndetMsgBox "Oprettelse af e -mail mislykkedes!"Afslut HvisAfslut Sub |