Avatar billede boro23 Forsker
22. februar 2022 - 09:38 Der er 3 kommentarer og
1 løsning

VBA spørgsmål/hjælp

Er der en excelhaj som kan svare/hjælpe med nedenstående. ;-)
Jeg har en vba kode i en excelfil, der vedhæfter filen til mail i outlook.
Det fungerer rigtig godt, men er det muligt, at tage specifikt ark/sheet og vedhæfte den som fil til mail i outlook? Hvis muligt, kan filen så få samme navn som ark/sheet navnet og vedhæftes som .xlsm?

Nuværende kode:
Sub excelfil_til_Outlook()
    Dim wb1 As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim FileExtStr As String
    Dim OutApp As Object
    Dim OutMail As Object

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

    Set wb1 = ActiveWorkbook

    TempFilePath = Environ$("temp") & "\"
    TempFileName = wb1.Name
    FileExtStr = "." & LCase(Right(wb1.Name, Len(wb1.Name) - InStrRev(wb1.Name, ".", , 1)))

    wb1.SaveCopyAs TempFilePath & TempFileName & FileExtStr

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

    On Error Resume Next

    With OutMail
        .Display
        .To = Range("D6")
        .CC = Range("D7")
        .BCC = ""
        .Subject = wb1.Name
        .HTMLBody = "<br>" & .HTMLBody
        .Attachments.Add TempFilePath & TempFileName & FileExtStr
        .Display
    End With
    On Error GoTo 0

    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
Avatar billede boro23 Forsker
22. februar 2022 - 09:41 #1
"at tage specifikt ark/sheet fra filen og vedhæfte den som fil til mail i outlook?"
Avatar billede ebea Ekspert
22. februar 2022 - 12:14 #2
Et alternativ til din egen kode, Den her vedhæfter et ark (som du vælger), og indsætter som en vedhæftet fil, og gemmer samtidig filen på dit skrivebord.
Du kan tilrette koden, til dit behov.

Sub Sendmail()
  Dim OutlookObj As Object
  Dim OutApp As Object
  Dim OutMail As Object
  Dim MailBody As String
  Dim sPath As String, sFile As String

  Set OutApp = CreateObject("Outlook.Application")
  Set OutMail = OutApp.CreateItem(0)
  MailBody = "Test af mail sending" & vbNewLine & vbNewLine & _
    "Vedhæftet: 1 stk. fil" & vbNewLine
  '
  sPath = CreateObject("WScript.Shell").specialfolders("Desktop") & "\"
  sFile = "Test - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
  Sheets("Ark1").Copy
  ActiveWorkbook.SaveAs sPath & sFile
  ActiveWorkbook.Close False
  '
  On Error Resume Next
  With OutMail
    .To = Range("D6")
    .CC = ""
    .BCC = ""
    .Subject = "Se vedhæftede fil"
    .Body = MailBody
    .Attachments.Add sPath & sFile
    .Display 'Vis, eller alternativ, brug .Send
  End With
  On Error GoTo 0
  Set OutMail = Nothing
  Set OutApp = Nothing
End Sub
Avatar billede boro23 Forsker
22. februar 2022 - 13:19 #3
Fantastisk, virker perfekt. Dog måtte jeg ændre filtype til .xlsx, men det kan jeg sagtens leve med. 1000 tak for hjælpen
Avatar billede ebea Ekspert
22. februar 2022 - 13:48 #4
#3 - Du kan godt bruge filtypen .xlsm hvis du bruger mailen fra en fil som er en .xlsm fil. Ellers får du fejlen (som du sikkert har opdaget), om du vil gemme filen som en ..... Du skal blot huske at ændre benævnelsen i koden også.
Og du er velkommen ;-)
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

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