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