Avatar billede taio Novice
24. februar 2005 - 17:21 Der er 16 kommentarer og
3 løsninger

Plugin til access

Hej alle eksperter

Jeg har tidligere forespurgt på at kunne generere en PDF udfra en rapport, som automatisk sendes med en e-mail. Men har aldrig fået en løsning.

Nu sidder jeg med sendobjekt, rapport, snapshot og det virker fint, mit sp. er om der er nogle som kender til et plugins til access, sådan at man kan sende via pdf istedet for snapshot. Har adobe acrobat installeret.

På forhånd tak.

Taio
24. februar 2005 - 17:36 #1
Du kan sende mails vha denne funktion, som også kan vedhæfte en hvilken som helst fil:

Public Sub CreateMail()
Dim OutL As Outlook.Application
Dim Item As MailItem
Dim Receiver As Recipient

    Set OutL = New Outlook.Application

    Set Item = OutL.CreateItem(olMailItem)
   
    With Item
        .Subject = "Mails"
        .Body = "Sådan sender man mails vha VBA"
        .FlagStatus = olFlagMarked
        .Attachments.Add "C:\Dokumenter\DinFil.pdf"
        .Recipients.Add "din@mail.dk"
             
        .Display
    End With
   
    Set Item = Nothing
End Sub


Jeg vil lige overveje hvordan du kan gemme i pdf-format forinden....
Avatar billede taio Novice
24. februar 2005 - 18:03 #2
Takker indtil vidre, tester lige din kode.
Avatar billede taio Novice
24. februar 2005 - 18:11 #3
Sættes kode bare ind i en form, kommer der fejl "Compile error" er det et modul der skal oprettes, eller mangler jeg bare nogle referencer ???

Taio
Avatar billede taio Novice
24. februar 2005 - 18:15 #4
Manglede bare en reference...... ;-)
Avatar billede taio Novice
24. februar 2005 - 18:30 #5
Koden virker fint, men kan man få den til at sende uden at outlook åbner, sådan at den sender af sig selv...??
24. februar 2005 - 18:45 #6
Nej, den skal bruge et eller andet program til at sende mailen. Og i denne kode har vi selv valgt Outlook.

Docmd.SendObject bruger også outlook, hvis det er default-mailprogrammet.
Avatar billede taio Novice
24. februar 2005 - 18:52 #7
Hvis man bruger sendobject, kan man selv vælge om man vil redigere inden den sendes..? vælges der nej, sendes den uden at man selv skal taste "SEND"
24. februar 2005 - 18:54 #8
Det kan du også her. I stedet for .Display skal du bare skrive .Send
24. februar 2005 - 18:55 #9
Om lidt, når mine unger er lagt i seng, skal jeg kigge på det med at gemme som pdf...
Avatar billede taio Novice
24. februar 2005 - 18:58 #10
Super......! ;-)
Avatar billede taio Novice
24. februar 2005 - 19:27 #11
Det vil være bedst hvis man kan undgå at skulle oprette en fil på disken (PDF) men at den sendes på samme måde som Snapshot, bare som pdf eller andet format som ikke kan rettes og åbnes uden spec. programmer. Den skal kunne indeholde billeder/logo og linjer... På forhånd tak...!
24. februar 2005 - 23:26 #12
Her er en stump kode, som virker hos mig.
Hos mig genereres PDF-filerne ved at man vælger at udskrive rapporten til den Printer, som hedder "Acrobat PDFwriter".

Koden finder derfor den printer, som hedder noget med PDFWriter og skriver rapporten ud til en tmpfil, som så lægges ind i mailen, hvorefter tmp-filen slettes igen.

Der er en del ukendte faktorer, som kan spolere koden på din maskine. Men prøv det:

Public Sub CreateMail(Til As String, Emne As String, Brødtekst As String, Optional Attachment As String, Optional SendImmidiatly As Boolean = False)
Dim OutL As Object
Dim Item As Object
Dim Receiver As Object

    Set OutL = CreateObject("Outlook.Application")

    Set Item = OutL.CreateItem(0)
   
    With Item
       
        .Subject = Emne
        .Body = Brødtekst
        If Len(Attachment) > 0 Then .Attachments.Add Attachment
        .Recipients.Add Til
             
        If SendImmidiatly Then
            .Send
        Else
            .Display
        End If
    End With
   
    Set Item = Nothing
End Sub


Public Function FindPDFWriter() As String
    'Find PDF-writer i printer-listen
    Dim prt As Printer
    For Each prt In Printers
        If prt.DeviceName Like "*PDFWriter*" Then
            FindPDFWriter = prt.DeviceName
        End If
    Next prt
End Function

Public Function SendSomPDF(strRptName As String)
    On Error Resume Next
    Dim tmpSti As String
    'Angiv temporær sti, hvor filen placeres kortvarigt
    tmpSti = "C:\"
    tmpSti = tmpSti = strRptName & ".pdf"
    DoCmd.OpenReport strRptName, acViewPreview, , , acHidden
    'Skift printer til pdfwriteren
    Set Reports(strRptName).Printer = Application.Printers(FindPDFWriter)
   
    SendKeys tmpSti, False
    SendKeys "{ENTER}", False
    DoCmd.OpenReport strRptName, acViewNormal
    DoCmd.Close acReport, strRptName
   
    'Send mail
    CreateMail "din@mail.dk", "Demo af .PDF", "dette er en demonstration af at sende rapporter som pdf-fil!", tmpSti, False
   
    'Slet tempfil
    Kill tmpSti
End Function
Avatar billede taio Novice
25. februar 2005 - 17:05 #13
Kigger lige på det i weekenden, men mange tak indtil videre. Husk at oprettet et svar :-)
25. februar 2005 - 17:22 #14
ja ja, men lad os nu se om det virker :o)
Avatar billede taio Novice
27. februar 2005 - 14:45 #15
Hej Thomas

Jeg kan ikke få den sidste kode til at virke. Den første virker perfekt. Den sidste volder mig store problemer. Har du mulighed for at sende en DB til mig på taio@private.dk hvor du har lavet din kriterier. Hvad med referencer, er der noget som jeg skal tilføje ?

På forhånd tak..

Jeg er villig til at give 200 point ekstra, idet jeg mangler det meget...

Taio
27. februar 2005 - 15:06 #16
Lad mig lige høre først. Hvordan gemmer du din rapport som PDF? Gør du det samme som jeg: Vælger menuen Filer->Udskriv og vælger derefter den "printer" som hedder "Acrobat PDFWriter"?

Hvis du gør det på en anden måde, så er det nok derfor. Og så hjælper det ikke at sende dig min db.

PS: Man må desværre ikke give mere end 200 point pr spørgsmål ;o)
Men det er også fint...
Avatar billede taio Novice
27. februar 2005 - 16:25 #17
Det er svært at sige, for jeg bruger ikke pdf endnu, men ja, jeg ville mene at det kunne gøres på denne måde. Nu bruger jeg DoCmd.OpenReport "faktura" til alm. print. Og SendObjekt til SnapShot. Men det er ikke alle som kan læse SnapShot, derfor PDF...! Håber at du forstår ?
Avatar billede taio Novice
27. februar 2005 - 22:19 #18
Tak for hjælpen.
Jag mangler bare at jeg kan sætte: "Dim prt As Printer" jeg kan ikke finde udaf om det er en reference jeg mangler, men jeg har fået det til at virke ved at sætte egenskaber på hver rapport. Send mig et svar, og jeg vil meget gerne give dig point.

Taio
28. februar 2005 - 06:01 #19
Dim prt As Printer burde virke uden referencer!?

Men virker det nu?
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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