PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBASkicka mail via Outlook från Excel...Skicka mail via Outlook från Excel...
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2021-05-26 16:34
 
Hej, jag har en Excelsida med kolumner, namn och e-postadresser. Och beroende på om vissa fält är ifyllda skall jag skicka ut en påminnelse om saknade dokument.
Jag har följebrev konverterade till PDF och beroende på resultat från körningen i Excel skall olika dokument skickas.
Jag har skrivit koden så här:


Sub Skicka()

FileName = "C:\Users\Tordmulen\Documents\Inför styrelsemöten\2021\" & FilNamn

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"C:\Users\Tordmulen\Documents\Inför styrelsemöten\2021\" & FilNamn, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

Call Outlook

End Sub
Sub Outlook()

Dim oFolder As Outlook.MAPIFolder
Dim oItem As Outlook.MailItem
Dim oOutlook As New Outlook.Application
Dim MoOutlook As Outlook.Namespace

Set MoOutlook = oOutlook.GetNamespace("MAPI")
Set oFolder = MoOutlook.GetDefaultFolder(olFolderOutbox)
Set oItem = oFolder.Items.Add(olMailItem)

Filbilaga = "C:\Users\Tordmulen\Documents\Inför styrelsemöten\2021\" & FilNamn

With oItem
.Recipients.Add ("Bla.Bla@hotmail.com")
.Subject = "E-post med Excel"
.Body = "Hej, medlem i Bla Bla Bla..."
.Attachments.Add Filbilaga
.Importance = olImportanceHigh
.Send
End With

Set oItem = Nothing
Set oFolder = Nothing

End Sub


Allt är ju frid och fröjd om jag bara kunde få in mitt följebrev in i detta via .Attachments.Add Filbilaga !?! Det som jag tror ställer till det är "ActiveSheet.ExportAsFixedFormat", d.v.s. den tar det dokumentet jag håller på med, i stället för den fil, d.v.s. det dokumentet jag vill bifoga...

Så hur ändrar jag " ActiveSheet.ExportAsFixedFormat" till att i stället ta PDF-filen som jag pekar på med FileName ??

Nytt inlägg
 2021-06-01 07:02
 

 Hej hej

Jag har ändrat din kod nedan och lämnat kommentarer: Kommentarerna synns bäst när du är inne i vb editorn. Lycka till /c

'opt exp innebär att du som programmerare tvingas att dimensionera dina variabler. Det blir i början lite omständigt, men det gör också att du inte riskerar fel som är svåra att upptäcka.

Option explicit

Sub Skicka()

'Undvik att använda variabler som redan används till något annat, döp gärna variabeln till vad den är. När man har både sökväg och filnamn kan det dessutom vara klokt att dela upp dessa i två delar, så blir lösningen antagligen lite mer dynamisk.

'Vill man skapa ett dynamiskt filnamn så att man inte döper filen till samma namn, så kan man använda sig av en iterator, eller av tidsfunktioner tillsammans med textfunktioner för att ta bort ogiltiga tecken.

Dim Mfile as string: Mfile = replace("ettfilnamn" & time &".pdf", ":", "")
'FileName = "C:\Users\Tordmulen\Documents\Inför styrelsemöten\2021\" & FilNamn

Dim mPath as string: mPath = "C:\Users\Tordmulen\Documents\Inför styrelsemöten\2021\"

Dim FileAndPath as string: FileAndPath = Mpath & Mfile

'ActiveSheet.ExportAsFixedFormat gör om ditt aktiva bladet till en pdf, och sparar med filnamn och sökväg som anges i egenskapen Filename.


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FileAndPath  _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

'vill man skicka med en variabel till en annan funktion så bör denna vara av typen function, även fast sub i detta fall skulle fungera det med. Även här ska vi undvika att döpa funktioner/variabler till något som redan finns.
Call mOutlook(FileAndPath)

End Sub

'När man skickar variabeln till en annan funktion så måste denna också dimensioneras inuti funktionshuvudet enligt nedan. Variabeln kan här döpas om till filbilaga om man vill.
Function mOutlook(FileAndPathas string)

Dim oFolder As Outlook.MAPIFolder
Dim oItem As Outlook.MailItem
Dim oOutlook As New Outlook.Application
Dim MoOutlook As Outlook.Namespace

Set MoOutlook = oOutlook.GetNamespace("MAPI")
Set oFolder = MoOutlook.GetDefaultFolder(olFolderOutbox)
Set oItem = oFolder.Items.Add(olMailItem)

Filbilaga = "C:\Users\Tordmulen\Documents\Inför styrelsemöten\2021\" & FilNamn

'Här lägger vi in sökvägen och filnamnet till pdfen som har skapats från ditt aktiva blad. Vill du inte använda den nyss skapade pdfen, utan har en annan pdf, så blir hela den anropade funktionen överflödig.
With oItem
.Recipients.Add ("Bla.Bla@hotmail.com")
.Subject = "E-post med Excel"
.Body = "Hej, medlem i Bla Bla Bla..."
.Attachments.Add FnameAndPath
.Importance = olImportanceHigh
.Send
End With

Set oItem = Nothing
Set oFolder = Nothing

End Sub

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBASkicka mail via Outlook från Excel...Skicka mail via Outlook från Excel...

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter