Gå til innhold

[Løst] Excel 2007 VBA Gjøre klar mail fra excel (Outlook)


Anbefalte innlegg

Hei.

 

Jeg har i dag en macro i excel som lager en ny arbeidsbok og sender denne på mail. Men, i stede for at den sender mailen. er det mulig å få den til å bare gjøre klar mailen? Sånn at det går ann å skrive mer i mailen før man sender den selv.

 

Kode snipp

 

Dim OutApp As Object
    Dim OutMail As Object
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    On Error Resume Next
  
    With OutMail
        'Hvem mailen skal sendes til. Finnes i ark "ver" celle G6
        .To = Sheets("Ver").Range("G6").Value
        .CC = ""
        .BCC = ""
        'Emne til mailen som skal sendes. Fra finnes i ark "Ver" celle G8
        .Subject = "Rapport for periode " & strNewWBName & "" & " Fra " &  Sheets("Ver").Range("G8").Value
        .Body = ""
        'legger ved rapporten
        .Attachments.Add (NewWBLoc & strNewWBName & ".xlsx")
        .Send
    End With
    On Error GoTo 0
    Set OutMail = Nothing
    Set OutApp = Nothing
 

 

Mvh

 

Torbjørn

Lenke til kommentar
Videoannonse
Annonse

Hei.

 

Det fikk jeg ikke til å fungere.

Det ser ut til at alt fungerer helt til den skal gjøre klar mailen.

 

Legger ved hele Sub classen i tilfellet det er noe der som gjør at det ikke fungerer.

 

Sub Send_mail()
'Sender mail

Application.ScreenUpdating = False

Dim strNewWBName As String, FullRngNewWb As Range, WB As Workbook, NewWBLoc As String
'lokasjonen hvor den nye arbeidsboken midlertidig vil bli lagret før den slettes finnes i ark "Ver" celle G10
NewWBLoc = Sheets("Ver").Range("G10").Value
'setter rangen som skal kopieres til arbeidsboken som skal sendes på mail
Set FullRngNewWb = ActiveSheet.Range("A1:O500")
'gir variabelen strNewWBName navnet til arket som skal sendes på mail
strNewWBName = ActiveSheet.Name
'oppretter en ny arbeidsbok
Workbooks.Add
'kopierer området over til den nye arbeidsboken
FullRngNewWb.Copy Destination:=Range("A1")
'Fryser de 2 øverste radene
Rows("3:3").Select
ActiveWindow.FreezePanes = True
'setter kolonnebredden så den er optimal for utskrift, setter marger til 0 og gjør retning til liggende
Columns("A:A").ColumnWidth = 8
Columns("B:B").ColumnWidth = 5.3
Columns("C:C").ColumnWidth = 26
Columns("D:D").ColumnWidth = 7.1
Columns("E:E").ColumnWidth = 7.2
Columns("F:H").ColumnWidth = 5.3
Columns("G:G").ColumnWidth = 6.1
Columns("I:I").ColumnWidth = 5.1
Columns("J:J").ColumnWidth = 6.7
Columns("K:N").ColumnWidth = 4.5
Columns("O:O").ColumnWidth = 33

With ActiveSheet.PageSetup
.Orientation = xlLandscape
.LeftMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
End With

'sletter knappen "Send mail"
ActiveSheet.Shapes("Button 1").Delete
'setter navnet på arbeidsboken og lagrer den. Altså arknavnet. Arknavnet er perioden rapporten er skrevet for
ActiveWorkbook.SaveAs (NewWBLoc & strNewWBName & ".xlsx")
'lukker den nye arbeidsboken
ActiveWorkbook.Close

Dim OutApp As Object
Dim OutMail As Object

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

On Error Resume Next

With OutMail
'Hvem mailen skal sendes til. Finnes i ark "ver" celle G6
.To = Sheets("Ver").Range("G6").Value
.CC = ""
.BCC = ""
'Emne til mailen som skal sendes. Fra finnes i ark "Ver" celle G8
.Subject = "Rapport for periode " & strNewWBName & "" & " Fra " & Sheets("Ver").Range("G8").Value
.Body = ""
'legger ved rapporten
.Attachments.Add (NewWBLoc & strNewWBName & ".xlsx")
.View

End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
'Sletter den nye arbeidsboken etter at mailen har blitt sendt
On Error Resume Next
Kill (NewWBLoc & strNewWBName & ".xlsx")
On Error GoTo 0

Application.ScreenUpdating = True

End Sub

Lenke til kommentar

Og der fungerte det :)

Jeg testa litt med å bare la "Kill" koden stå som den gjorde. å det fungerer helt fint.

 

Er det noe jeg kan la gå eller er det stor sannsynlighet for at dette skaper problemer senere?

 

Tusen takk for hjelpen :)

 

Mvh

 

Torbjørn

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...