Print side | Luk vindue

Makro der sender pdf fil via outlook

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=773
Udskrevet den: 01.Nov.2024 kl. 03:18


Emne: Makro der sender pdf fil via outlook
Besked fra: svinding67
Emne: Makro der sender pdf fil via outlook
Posteringsdato: 08.Maj.2012 kl. 12:54
Kære Forum
 
Jeg har nedenstående bid vba program der ved tryk på knap sender excel fil til de definerede brugere i c4. Men jeg ønsker fil sendt som pdf men kan ikke finde ud af hvordan. Kan i hjælpe?
 
 
  activeWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\DOCUME~1\nsa\LOKALE~1\Temp\Mappe1.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
    activeWorkbook.SendMail Recipients:=([c4]), Subject:=("budgetopfølgning maj")
End Sub
 
Mvh NielsSmile



Svar:
Besked fra: Allan
Posteringsdato: 08.Maj.2012 kl. 20:44
Hej Niels,
 
Jeg har en kodestump som jeg lavede for en del år siden, den er din hvis du kan bruge den.
Det aktive ark gemmes på skrivebordet som pdf og sendes til alle adresser som står i C4.
Koden skal placeres i sit eget modul.
Kør sub'en Print_To_PDF for at starte afsendelsen.
 
//Allan
 
Const BrevFil = "Fil.pdf"
Const Aarsag = "Hermed efter aftale..."
Sub Print_To_PDF()
'Finder brugerens skrivebord
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
SaveDir = objFolders("desktop")
'Det aktive ark konverteres til PDF
'Opdateringen som gør Office 2007 klar til dette, kan hentes her:
http://www.microsoft.com/downloads/details.aspx?familyid=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=da - ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SaveDir & Application.PathSeparator & BrevFil, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
Call Sendmail
End Sub
Sub Sendmail()
'Finder brugerens skrivebord
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
SaveDir = objFolders("desktop")
  Dim olApp As Outlook.Application
  Dim oItem As Outlook.MailItem
  Set olApp = New Outlook.Application
  Set oItem = olApp.CreateItem(olMailItem)
  With oItem
    .To = Range("C4").Text
    .CC = ""
    .BCC = ""
    'Mail emne
    .Subject = "Daglig mail pr. d." & Date
    'Mail tekst
    .Body = " " & vbNewLine & Aarsag & vbNewLine
    'Vedhæftet PDF fil
    .Attachments.Add SaveDir & Application.PathSeparator & BrevFil
    'Mulighed for at kræve svar når modtager åbner mailen
    .ReadReceiptRequested = False
    .Send
  End With
'Sletter PDF fil
Kill SaveDir & Application.PathSeparator & BrevFil
End Sub


Besked fra: svinding67
Posteringsdato: 10.Maj.2012 kl. 14:52
Hej Allan
 
Tak for det fremsendte. Jeg vil kigge på det, men umiddelbart kan jeg ikke genkende min egen vba koder! Troede på en mere simpel løsning da jeg ikke er en haj til vba. Jeg havde håbet at kunne tilføje en linje til min kode men så let er det nok ikke.....mange hilsner Niels


Besked fra: Allan
Posteringsdato: 15.Maj.2012 kl. 20:25
Velbekomme.
Sig til hvis jeg koden er for indviklet eller ikke virker. Jeg laver gerne et andet oplæg.
 
//Allan


Besked fra: svinding67
Posteringsdato: 04.Jun.2012 kl. 13:27
Hej Allan
 
Kan du hjælpe yderligere hvis du tager nedenstående i betragtning:
 
min fil jeg ønsker at sende som pdf hedder "budgetopfølgning juni 2012"
den skal sendes som pdf
til modtagerne i c4
til cc i c5
til bcc i c6
der skal ikke gemmes på skrivebord
ikke krav om at modtager skal svare
 
 
Jeg er jo ikke ekspert i vba så du må gerne tydeliggøre hvad der er decideret programering og hvad der er uddybende forklaring:)
 
Når nu dette er en fil jeg vil sende månedligt (efter opdatering) kan jeg så definere emne i mail til at følge filens navn?
 
Håber du kan hjælpe videre.
 
Mange hilsner
Niels
 
 
 


Besked fra: Allan
Posteringsdato: 04.Jun.2012 kl. 14:06
Hej Niels,
 
Selvfølgelig vil jeg hjælpe.
Nedenstående kode gør som du efterspørger.
 
Rent teknisk, er jeg nødt til at gemme pdf'en et sted for at kunne sende den, men den slettes automatisk efter at mailen er sendt.
Du kan selv rette filnavn og brødtekst i koden foroven.
Der er mulighed for at pdf kan få samme navn som din Excelfil eller måske fanens navn, hvad ønsker du? 
 
Kopier hele koden (Den som er farvet blå herunder) ind i dit ark.
Når du har sat koden ind, vil du kunne se at jeg har skrevet lidt forklaringer i koden. (De vil være fremhævet med grønt)
Har du brug for hjælpe til at lægge koden i dit ark, så sig til.
 
 
Const FilNavn = "budgetopfølgning juni 2012.pdf"
Const Broedtekst = "Hermed fremsendes budgetopfølgning juni 2012"
 
Sub Print_To_PDF()
'Finder brugerens skrivebord
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
SaveDir = objFolders("desktop")
'Det aktive ark konverteres til PDF
'Bruger du Office 2007, skal du muligvis hente en opdatering som gør det muligt at gemme som pdf:
http://www.microsoft.com/downloads/details.aspx?familyid=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=da - ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SaveDir & Application.PathSeparator & FilNavn, Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
Call Sendmail
End Sub

Sub Sendmail()
'Finder brugerens skrivebord, hvor en midlertidig fil gemmes
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
SaveDir = objFolders("desktop")
  Dim olApp As Outlook.Application
  Dim oItem As Outlook.MailItem
  Set olApp = New Outlook.Application
  Set oItem = olApp.CreateItem(olMailItem)
  With oItem
    'Hvem sendes mailen til
    .To = Range("C4").Text
    .CC = Range("C5").Text
    .BCC = Range("C6").Text
    'Mail emne
    .Subject = FilNavn
    'Mail tekst
    .Body = " " & vbNewLine & Broedtekst & vbNewLine
    'Vedhæfter PDF fil
    .Attachments.Add SaveDir & Application.PathSeparator & FilNavn
    'Mulighed for at kræve svar når modtager åbner mailen
    .ReadReceiptRequested = False
    .Send
  End With
'Sletter midlertidig fil fra skrivebordet
Kill SaveDir & Application.PathSeparator & FilNavn
End Sub
 


Besked fra: svinding67
Posteringsdato: 04.Jun.2012 kl. 14:59
Hej Allan
 
Tak for hurtigt svar. Jeg får en fejl retur efter indsættelse af dit forslag. Ville det værer ok hvis jeg sendte fil og du indsatte programmeringen? Hvis det kan lade sig gøre...
 
/Niels


Besked fra: Allan
Posteringsdato: 04.Jun.2012 kl. 15:20
Intet problem,
 
Klik på mit navn til højre for denne besked og vælg "Send personlig besked"
Upload dit regneark og send den til mig.
 
//Allan
 


Besked fra: Allan
Posteringsdato: 05.Jun.2012 kl. 10:30
Hej igen,
 
Nu har jeg lagt koden i din fil, så den kan sendes via mail som pfd ved klik på en knap.
Husk at ændre e-mailadresserne så de passer med virkeligheden.
 
uploads/1/leg_med_makro.xlsm - uploads/1/leg_med_makro.xlsm
 
Inden du forsøger at bygge det ind i et andet ark, skal du huske at lave en reference til Outlook i VBA-editoren på det nye ark.
Det gøres således:
 
Gå ind i VBA-editoren (ALT + F11)
Gå op i menuen og vælg 'Tools' og 'References'
På listen skal du nu sætte en markering ved 'Outlook xx.x OPbject Library'
 
 
Når det er gjort, vil det virke.
 
//Allan


Besked fra: svinding67
Posteringsdato: 07.Jun.2012 kl. 08:11
Hej Allan
 
Det virkerSmile
 
Mange tusinde tak for hjælpen (som altid super hjælp at hente her). Jeg glæder mig til at bruge dette ifm arbejde. Jeg har lånt en bog om vba programmering og med dette program og strukturen bagved er jeg godt på vej.
 
Vil senere i dag ligge programmet i den rette fil og så hurtigt som muligt tage den i anvendelse...glæder mig til den lettelse dette vil giveSmile.
 
Mange tusinde tak. Hilsen Niels
 


Besked fra: Allan
Posteringsdato: 07.Jun.2012 kl. 08:40
Velbekomme Niels og tak fordi du meldte din positive oplevelse tilbage.
 
Tro mig, at læse VBA vil du ikke fortryde, det giver vildt mange muligheder for nemmere arbejdsgange.
Når du har læst bogen, kan du f.eks. også besvare spørgsmål her i forummet LOL, det er jo ikke så dårligt.
 
//Allan


-------------
MVH

Allan
https://www.excel-regneark.dk" rel="nofollow - Excel-regneark.dk - Gratis skabeloner til Excel
Få over 120 ekstra funktioner med Danmarks bedste add-in


Besked fra: svinding67
Posteringsdato: 07.Jun.2012 kl. 11:42
Hej igen Allan
 
Jeg vil gerne tilføje yderligere i const broedtekst. Lige nu hedder den hermed fremsendes budgetopfølgning for juni 2012. Men hvis nu jeg ønsker at tilføje Kære Allan efterfulgt af Hermed.... og så slutte af med Mvh Niels. Har forsøgt diverse ting men den melder fejl.
 
Ligeledes har jeg behov for at kunne sende mail til flere en mailto:nsa@statsbiblioteket.dk - nsa@statsbiblioteket.dk . Har forsøgt at tilføje i celle c5 og så rette i programmet, men så sker der intet??
 
mvh Niels


Besked fra: Allan
Posteringsdato: 08.Jun.2012 kl. 12:26
Hej Niels,
 
Ret Const Broedtekst til:
Const Broedtekst = "Kære rette vedkommende," & vbCrLf & "Hermed fremsendes budgetopfølgning juni 2012" & vbCrLf & "Med venlig hilsen Niels"
 
Blot for forståelsen:
For hver gang til man afslutter en tekst med gåseøjne, og vil tilføje en ny linje, skal man bruge VbCrLf (carriage return line feed)
Når man skifter mellem tekst i gåseøjne og en statement som Line feed, bruges &-tegnet.
Linjen skal se sådan ud.
"Hej med dig" & VbCrLf & "jeg hedder Kaj"
Resultatet bliver:
Hej med dig
jeg hedder Kaj
 
//Allan
 


Besked fra: svinding67
Posteringsdato: 08.Jun.2012 kl. 12:36
Hej Allan
 
Super svar og fint at du gider at lave uddybningen for min forståelse.
 
Håber du senere kan hjælpe med mit andet spørgsmål om at kunne tilføje flere mail adresser:)
 
mange hilsner Niels


Besked fra: Allan
Posteringsdato: 08.Jun.2012 kl. 15:06
Ups, det missede jeg.
Du skal slet og ret skrive dem efter hinanden i cellen, blot med semikolon som seperator.
F.eks. mailto:test@test.dk;test2@test.dk - test@test.dk;test2@test.dk
 
//Allan


Besked fra: svinding67
Posteringsdato: 08.Jun.2012 kl. 20:30

SmileSmileNiels er meget glad for den hjælp han har fået indtil videre og glæder sig til at kunne give igen på et senere tidspunkt. VBA er bare forsmart.

 
Mange hilsner
Niels


Besked fra: Allan
Posteringsdato: 11.Jun.2012 kl. 12:51
Super,
Det var fedt at du kunne bruge det.
 
//Allan


-------------
MVH

Allan
https://www.excel-regneark.dk" rel="nofollow - Excel-regneark.dk - Gratis skabeloner til Excel
Få over 120 ekstra funktioner med Danmarks bedste add-in


Besked fra: svinding67
Posteringsdato: 24.Sep.2012 kl. 12:11
Hej Jan
 
Har været nede og ligge efter en diskusprolaps opperation men skal nu afslutte min projekt med at sende fil som pdf.
 
Jeg har fået ovenstående til at virke, men i min excel fil er der flere faneblade der alle gerne skulle pdf'es i en og samme leverance? Jeg kan se i programmet at der står det aktive ark? Hvordan kan jeg sende den samlede excel fil som pdf.
 
Håber du også kan hjælpe mig videre med denne del:)
 
mvh Niels


Besked fra: svinding67
Posteringsdato: 24.Sep.2012 kl. 13:27
...jeg har fundet ud af at skrive workbook istedet for sheet. Men jeg har et problem der fortsat blokerer min afsendelse og ville også gerne kunne præciserer hvad der skulle pdf'es (evt. udskriftsområde eller akr 1-3 men ikke 4.
 
Men Jeg har lige nogle udfordringer med at få hul igennem til outlook som jeg lige vil have afklaret først. Jeg har sat hak under vba editoren ved outlook så det er ikke det der driller.
 
Den stopper under Sub Sendmail () ved linjen
Dim olap as outlook. application
 
det er ihvertfald fremhævet. og fejlmeddelsen compile error: user-defined type not defined.
 
Jeg har sendt outlook til min egen helpdesk funktion og håber at få afklaret fejlen hvorefter jeg håber du kan hjælpe med at få afgrænset de ark jeg vil pdf....
 
mvh NIels
 



Print side | Luk vindue