Hvis du raskt vil konvertere et Excel-regneark til et PDF fil og legg ved denne PDF fil til en Outlook-e-post for å sende den, kan du bruke metoden introdusert i denne artikkelen. Den bruker VBA for å utføre denne oppgaven i løpet av sekunder.
For å være ærlig, å legge ved en hel Excel-arbeidsbok som en PDF vedlegg i en e-post er ganske enkelt. Du kan først lagre arbeidsboken som en PDF fil og opprett en ny Outlook-e-post og legg ved PDF fil til denne e-posten. Men i Excel er det ingen slik direkte funksjon for å konvertere et enkelt regneark til en PDF fil og send den. Derfor, hvis du raskt vil legge ved et Excel-regneark som et PDF vedlegg i en e-post, kan du bruke følgende midler.
Legg ved et Excel-regneark som et PDF Vedlegg i e-posten din
- For det første må du åpne Excel-kilderegnearket som normalt.
- Deretter i Excel-vinduet bør du trykke på "Alt + F11"-tastene.
- Deretter vil du få tilgang til Excel VBA-redigeringsvinduet med suksess.
- Etter det bør du åpne "ThisWorkbook" -prosjektet.
- Kopier og lim deretter inn følgende VBA-kode i dette prosjektvinduet.
Sub SendWorksheet_AsPDFAttachment_OutlookEmail() Dim objFileSystem As Object Dim strTempFile As String Dim objOutlookApp As Outlook.Application Dim objMail As Outlook.MailItem 'Spesifiser regnearkets navn Sheets("DataNumen Staff").Aktiver ActiveSheet.UsedRange.Select ThisWorkbook.Sheets(Array("DataNumen Staff")). Velg Angi objFileSystem = CreateObject("Scripting.FileSystemObject") strTempFile = objFileSystem.GetSpecialFolder(2).Path & "\" & ActiveSheet.Name & " i " & ThisWorkbook.Name & ".pdf" 'eksporter det spesifikke regnearket som PDF Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strTempFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True 'Opprett en ny e-post Set objOutlookApp = CreateObject("Outlook.Application") Sett objMail = objOutlookApp.CreateItem(olMailItem) 'Legg ved PDF file objMail.Attachments.Add strTempFile objMail.Display '==>vis denne e-posten 'Slett midlertidig PDF fil objFileSystem.DeleteFile (strTempFile) End Sub
- Til slutt, for å utløse den nye makroen, kan du trykke på "Kjør"-ikonet i verktøylinjen eller trykke rett på "F5"-tasten.
- Etter at makroen er ferdig å kjøre, vil en ny Outlook-e-post vises med en gang. I den kan du se en PDF fil i "Attached"-linjen, som følgende skjermbilde:
Beskytt Outlook-filen mot å bli skadet
Som vi alle vet, er Outlook utsatt for korrupsjon, i likhet med Word-dokumenter og Excel-arbeidsbøker. Derfor bør vi forstå hvordan vi beskytter Outlook mot korrupsjon. På grunn av det faktum at virus har blitt mer og mer komplekse og utbredt, er Outlook ofte korrupt på grunn av virusinfeksjon og malwareangrep. I denne situasjonen må du installere pålitelig antivirusprogramvare og deaktivere automatisk nedlasting av eksterne filer. Videre må du heller få tak i anther robust Outlook-fiks verktøy, som DataNumen Outlook Repair. Det er i stand til å gi deg most effektivt middel i tilfelle Outlook-korrupsjon.
Forfatterintroduksjon:
Shirley Zhang er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert fikse sql og Outlook-reparasjonsprodukter. For mer informasjon besøk www.datanumen. Med
Hei,
Ville det være en måte å legge til denne vbaen til min nåværende funksjon.
Jeg prøver å få pdf å legge ved e-posten min gjennom vba opprettet for regnearket mitt.
Her er min vba for kontakter som vises automatisk når jeg klikker på grafikkknappen opprettet:
'VBA-underprosedyre til Start E-post
Sub Start_Email()
Dim iConfirmation As VbMsgBoxResult
iConfirmation = MsgBox(“Send STP-utkastoppgave til tildelt – Ja?”, vbYesNo + vbQuestion, “Confirmation”)
Hvis iConfirmation = vbNo Avslutt Sub
'Erklære variabler for å referere til 'E-postliste'-regnearket
Dim sh As arbeidsark
Dim iRow som heltall
Sett sh = ThisWorkbook.Sheets(“E-postliste”)
iRow = 2
Gjør mens sh.Range(“A” & iRow). Verdi “”
'sjekk om e-post allerede er sendt eller ikke
Hvis sh.Range(“C” & iRow).Value = “” Da
'Call SendEmail(S_UserName As String, S_EmailID As String)
Ring SendEmail(sh.Range(“A” & iRow).Value, sh.Range(“B” & iRow).Value)
sh.Range(“C” & iRow).Value = “Ja – Sendt oppgave. Lås opp for å sende revisjon"
End If
iRow = iRow + 1
Loop
End Sub
….og her er min innsats så langt, men pdf vil ikke legge ved når valgt:
'VBA-prosedyre for å forberede og sende e-post
Sub SendE-post(S_UserName As String, S_EmailID As String)
'Erklære variabler som objekttype for å referere til Outlook-applikasjon og post
Dim OutApp As Object ' Outlook-applikasjon
Dim OutMail som objekt 'Outlook Mail Item
Dim sImgName As String
Dim resultat som variant
result = Application.GetOpenFilename(“Alle filer,*.*,Excel-filer,*.xls,Word-filer,*.doc,PDF Filer,*.pdf")
PathFileName = ThisWorkbook.path & “\” & FileName & “.pdf"
'legg til bane og fil til variabler
Dim aPath As String: aPath = Cells(1, 1).Verdi
'Angi referansen til Outlook-applikasjonen
Sett OutApp = CreateObject(“Outlook.Application”)
'Angi referansen til posten
Sett OutMail = OutApp.CreateItem(0)
On Error Resume Next
Med OutMail
.Til = S_EmailID
.Fra = ""
.CC = S_Brukernavn
.BCC = ""
.attachments.Add ThisWorkbook.path & “\STP_DTask_instructions.pdf"
.attachments.Add ThisWorkbook.path & “\STPLogo.jpg”
.vedlegg.Legg til aPath
.attachments.Add ActiveWorkbook.FullName
myattachments.Legg til "FullPath\FileName.pdf"
sImgName = "STPLogo.jpg"
.Emne = Celler(8, 2). Verdi
.HTMLBody = ""
.Vise
'.Sende
Slutt med
Sett OutMail = Ingenting
Sett OutApp = Ingenting
End Sub
'VBA-underprosedyre til Start E-post
Sub Start_Email()
Dim iConfirmation As VbMsgBoxResult
iConfirmation = MsgBox(“Send STP-utkastoppgave til tildelt – Ja?”, vbYesNo + vbQuestion, “Confirmation”)
Hvis iConfirmation = vbNo Avslutt Sub
'Erklære variabler for å referere til 'E-postliste'-regnearket
Dim sh As arbeidsark
Dim iRow som heltall
Sett sh = ThisWorkbook.Sheets(“E-postliste”)
iRow = 2
Gjør mens sh.Range(“A” & iRow). Verdi “”
'sjekk om e-post allerede er sendt eller ikke
Hvis sh.Range(“C” & iRow).Value = “” Da
'Call SendEmail(S_UserName As String, S_EmailID As String)
Ring SendEmail(sh.Range(“A” & iRow).Value, sh.Range(“B” & iRow).Value)
sh.Range(“C” & iRow).Value = “Ja – Sendt oppgave. Lås opp for å sende revisjon"
End If
iRow = iRow + 1
Loop
End Sub