Avatar billede Jacob00 Mester
12. oktober 2021 - 14:55 Der er 6 kommentarer og
1 løsning

Automatisk email med VBA

Hej Alle eksperter

Jeg har denne VBA kode som jeg bruger til en knap der generere en automatisk email. Jeg har brugt den på et andet Excel dokument før og skal nu bruge den på et nyt. Men jeg får fejl når jeg kører den. Den siger "Denne fil blev ikke fundet".
Linjen fejlen kommer på har jeg skrevet FEJL helt ude til højre.
Kan ikke selv se hvad fejlen skulle være, når præcis samme kode virker et andet dokument.
Håber i kan hjælpe...

Private Sub CommandButton1_Click()

Dim IsCreated As Boolean
  Dim i As Long
  Dim PdfFile As String, Title As String
  Dim OutlApp As Object

  ' Not sure for what the Title is
  Title = Range("A1")

  ' Define PDF filename
  PdfFile = ActiveWorkbook.FullName
  i = InStrRev(PdfFile, ".")
  If i > 1 Then PdfFile = Left(PdfFile, i - 1)
  PdfFile = Format(Now(), "MM-DD-YYYY") & " Ordre" & ".pdf"

  ' Export activesheet as PDF
  With ActiveSheet
    .PageSetup.PaperSize = xlPaperLegal
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  End With

  ' Use already open Outlook if possible
  On Error Resume Next
  Set OutlApp = GetObject(, "Outlook.Application")
  If Err Then
    Set OutlApp = CreateObject("Outlook.Application")
    IsCreated = True
  End If
  OutlApp.Visible = True
  On Error GoTo 0

  ' Prepare e-mail with PDF attachment
  With OutlApp.CreateItem(0)

' Prepare e-mail
.Subject = "Faber-Castell ordre" & Format(Now(), "MM-DD-YYYY")
.To = "sale@email.com" ' <-- Put email of the recipient here
.CC = "" ' <-- Put email of 'copy to' recipient here
.Body = "Ordre " & vbLf & vbLf _
      & "" & vbLf & vbLf _
      '& "Regards," & vbLf _      (slet (') for regards Faber-Castell)
      '& Application.UserName & vbLf & vbLf
.Attachments.Add PdfFile                                                                      FEJL

' Try to send
On Error Resume Next
.display
Application.Visible = True
If Err Then
  MsgBox "E-mail was not sent", vbExclamation
Else
  MsgBox "Din ordre er hermed afgivet", vbInformation
End If
On Error GoTo 0

  End With

  ' Delete PDF file
  Kill PdfFile

  ' Release the memory of object variable
  Set OutlApp = Nothing


End Sub
Avatar billede ebea Ekspert
12. oktober 2021 - 16:07 #1
Har du ikke glemt at indsætte:    .Send
i linjen under hvor du får fejlen  .Attachments.AddPdfFile
Avatar billede Juul Forsker
14. oktober 2021 - 11:52 #2
Skal der ikke angives et sted hvor filen skal exporteres hen? Som jeg kan se det, gør den ikke rigtigt noget.

#1 Der er .display længere nede
Avatar billede Juul Forsker
14. oktober 2021 - 11:58 #3
Nå, ved nærmere undersøgelse gemmer den på mit skrivebord. Men jeg tænker ikke attachement.add har styr på hvor mit chrdir er. Kunne det evt. være det der driller? Jeg tilføjer typisk kun xlsx filer, og der er filen åben - måske problemet er at pdf'en ikke åbner, men kun exporterer? Der tror jeg der er nogle andre kloge hoveder der skal på banen :)
Avatar billede ebea Ekspert
14. oktober 2021 - 12:20 #4
#2 - Det som koden gør, er at oprette en PDF fil ud fra det som er i den aktuelle åbne fil. Den bliver så sendt med Outlook (skulle sendes), ud fra de kommandoer som er angivet i koden.
At der står .Display, gør kun at pdf filen vises, inden sending. Men filen sendes ikke automatisk, da der mangler .Send

Om så spørgeren reagerer på indlæggene, er nok en anden sag! Indtil videre, ser det ikke som han har den store interesse i det.
Avatar billede Jacob00 Mester
14. oktober 2021 - 13:02 #5
Hej med jer

Tak for jeres input.
Jeg har bevidst ikke sat .send på da jeg egentlig bare ville have den skulle åbne mailen med pdf filen, da jeg gerne ville have at man skulle kunne rette i mailen inden man så sender.

Jeg ved ikke hvordan, men fejlen den kom op med er forsvundet, aner ikke hvad jeg har fået gjort, men nu virker det altså. Heldigvis.

Men i skulle vel ikke vide hvordan jeg kan sende det som en CSV fil også?
Jeg har prøvet at ændre de steder hvor der står pdf, pdffile osv. så alt hed Csv men det virker ikke.
Jeg ved ikke lige hvordan jeg kan ændre det uden at rette for meget i koden.
Er det overhovedet muligt at bruge den samme kode og bare ændre filformatet? Eller skal jeg lave en helt ny?
Avatar billede ebea Ekspert
14. oktober 2021 - 13:43 #6
#5 - Du kan ikke sende din fil som en CSV fil, ligesom du kan med en PDF fil.
For at gøre dette, er du nødt til at gemme din fil først som en CSV fil, og derefter hente den ind i din Outlook kode (din kode du har, skal ændres).

Og så ville det være god skik, at lukke dine spørgsmål, hvis du har fået løst emnet, du spurgte om.
Du har et andet spørgsmål stående åben!
Avatar billede Jacob00 Mester
14. oktober 2021 - 14:18 #7
Jeg får lukket disse spørgsmål så og laver et nyt mht. CSV filen, måske er der et smart trick.

Hvordan lukker man spørgsmål? Er det ved at markere en kommentar som løsning, eller kan man helt lukke kommentarsporet?
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