Avatar billede lineriber Praktikant
22. maj 2013 - 11:29 Der er 5 kommentarer og
1 løsning

VBA til excel: dan pdf fil og vedhæft i email

Hej Eksperter

Jeg arbejder i Excel 2010 engelsk version.

Er der nogen der kan hjælpe med en VBA kode der kan følgende:
1) dan en pdf fil ud fra et angivet print area i en excel fane
2) vedhæft denne pdf fil i en nyoprettet MS Outlook email
3) angive email subject til en tekst string der bla. hentes fra excel filen, fx ="Cost report "&R4&" - "&D5&" "&D4
4) indsætte en tekst i emailens tekstfelt. Teksten skal kunne defineres i VBA koden
5) jeg skal selv kunne indtaste emailadresse
6) jeg skal selv afslutte processen ved at klikke på "Send" i MS Outlook hvorefter jeg skal returnere til excel filen.

er der nogen der kan hjælpe med ovenstående?

Mvh
Line
Avatar billede lineriber Praktikant
23. maj 2013 - 13:28 #1
Nå, jeg tror jeg endte med selv at finde en måde at klarer det på - dog uden at det nødvendigvis er hverken kønt eller 100% korrekt, men det virker til det jeg skal bruge det til.

Jeg har primært fået inspiration her fra: http://msdn.microsoft.com/en-us/library/office/ee834871(v=office.11).aspx

Hvis andre har brug for lignende er koden her:


Sub CreatePDF_attach_to_EMAIL()

    Dim Wkb As String
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object

Wkb = ThisWorkbook.Name
TempFilePath = Environ$("temp") & "\"


TempFileName = TempFilePath & Wkb & ".pdf"

Worksheets("Dev Report").ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
        TempFileName, Quality:= _
        xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
 

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

With OutMail
    .Display
    End With
        Signature = OutMail.body 'gets the email's standard signature

On Error Resume Next

With OutMail
.To = "email address" 'can instead be linked to a cell in the excel sheet
.CC = ""
.BCC = ""
.Subject = "Cost status report - " & ActiveWorkbook.Worksheets("Dev Report").Range("D5") & " - " & ActiveWorkbook.Worksheets("Dev Report").Range("D4") & " - " & ActiveWorkbook.Worksheets("Dev Report").Range("R4")
.body = "Hi" & Chr(10) & Chr(10) & "Please find attached cost status report for " & ActiveWorkbook.Worksheets("Dev Report TEST").Range("D4") & " at end of " & ActiveWorkbook.Worksheets("Dev Report TEST").Range("R4") & Chr(10) & Signature
.Attachments.Add TempFileName
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing

If Dir(TempFileName) <> "" Then Kill TempFileName 'deletes the created PDF file in the temps-folder
   
End Sub
Avatar billede Lund Novice
09. marts 2016 - 11:43 #2
Tak for din løsning. Den hjalp mig rigtig meget og har gjort min dag til en super dag :-) Tak for det
Avatar billede Butterfly Ekspert
22. november 2018 - 08:19 #3
Hvor er det smart, lige hvad jeg har brug for :-)
Avatar billede Butterfly Ekspert
22. november 2018 - 08:50 #4
Jeg kan ikke få "Body" til at virke, jeg har skrevet
Dim strbody As String
Avatar billede Butterfly Ekspert
22. november 2018 - 08:51 #5
Har fundet fejlen, nu virker det perfekt
Avatar billede Butterfly Ekspert
09. januar 2019 - 13:15 #6
Hej
Hvordan får jeg den til at danne 2 pdf-filer? Jeg har 2 faner jeg gerne vil have dannet om til hver sin pdf-fil.
Jeg kan finde ud af det, hvis fanerne skal i samme fil, men det skal de ikke :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester