Avatar billede kim1a Ekspert
24. september 2015 - 16:58 Der er 4 kommentarer og
1 løsning

VBA skab og send email via outlook

Min eksisterende makro omdanner et faneblad til en pfd og gemmer det på en destination brugeren vælger.

Jeg ønsker nu at den opretter en mail i outlook og sender den gemte pdf til en specifik adresse angivet i en celle.

Jeg har forsøgt at google mig frem, men forstår ikke helt hvordan det skabes. Makro optageren siger bare opret mail og følg nyt vindue (mailen) hvorefter jeg ikke kan se hvordan jeg skal skrive emne og vedhæfte.

Måske det giver mening at sende og gemme samtidig?

Jeg har følgende kode:
' Spørg brugeren om placering - skrivebord eller vælg selv
Dim MSG1 As VbMsgBoxResult
Dim strFilplacering As String

MSG1 = MsgBox("Skal tilbudet gemmes på dit skrivebord?", vbYesNo)
    If MSG1 = vbYes Then strFilplacering = "C:\Users\" & Environ("username") & "\Desktop\" Else strFilplacering = Application.FileDialog(msoFileDialogFolderPicker)

' Filen gemmes på den valgte destination som pdf
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
        strFilplacering & "Kontrakt vedrørende tilbud " & Range("D7").Text, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
       
jeg tænker at noget i retning af (googlinger jeg har kunne forstå):
outapp.createitem (0)
With OutMail
            .to = "ron@debruin.nl"
            .CC = ""
            .BCC = ""
            .Subject = "This is the Subject line"
            .Body = "Hi there"
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .send
        End With

Men jeg vil ikke have at brugeren manuelt skal trykke send, den skal bare ryge afsted med de detaljer jeg ønsker.
Avatar billede store-morten Ekspert
24. september 2015 - 17:22 #1
Denne, også fra rondebruin, sender aktive ark.
Sub Mail_ActiveSheet()
'Working in Excel 2000-2013
'For Tips see: http://www.rondebruin.nl/win/winmail/Outlook/tips.htm
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    'Copy the ActiveSheet to a new workbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook

    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 97-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007-2013
            Select Case Sourcewb.FileFormat
            Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If .HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56: FileExtStr = ".xls": FileFormatNum = 56
            Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With

    '    'Change all cells in the worksheet to values if you want
    '    With Destwb.Sheets(1).UsedRange
    '        .Cells.Copy
    '        .Cells.PasteSpecial xlPasteValues
    '        .Cells(1).Select
    '    End With
    '    Application.CutCopyMode = False

    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")

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

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = "modtager@adresse.dk"
            .CC = ""
            .BCC = ""
            .Subject = "This is the Subject line"
            .Body = "Hi there"
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send  'or use .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
Avatar billede kim1a Ekspert
24. september 2015 - 18:16 #2
Ja det er nøjagtigt derfra jeg har det - men jeg ville egentlig helst have en løsning som ikke skal gemme og slette igen og have temp filer mv.

Hvad er kommandoen for at starte outlooks mail op? Er det noget med Outmail?
Avatar billede kim1a Ekspert
25. september 2015 - 15:15 #3
Nå efter lidt mere søgen rundt endte jeg med try and error metoden at koge rondebruins ned til dette:

Sub Mail_ActiveSheet()

    Dim OutApp As Object
    Dim OutMail As Object

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

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

    With ActiveWorkbook
        With OutMail
            .to = "kim.eriksen@volvo.com"
            .CC = ""
            .BCC = ""
            .Subject = "This is the Subject line"
            .Body = "Vedhæftet er detaljer fra tilbud "
              'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .send  'or use .Display
        End With
        On Error GoTo 0
    End With

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

Så smid bare et svar, så du kan få point for hjælpen. Jeg forstår dog ikke helt de to linjer her:
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

Er det ikke blot "god programmering" at lave en set og så nulle dem efterfølgende?
Avatar billede kim1a Ekspert
29. september 2015 - 11:19 #4
Smider du et svar?
Avatar billede store-morten Ekspert
29. september 2015 - 11:58 #5
Kommer her
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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