Avatar billede hanstorp Juniormester
23. april 2009 - 09:08 Der er 14 kommentarer og
1 løsning

flet tekst og send mail

Hej eksperter.
Hvordan opbygger man en tekst med dels et standardbrev og indsatte databasefelter og sender det via mail, når man står inde i en formular (med de aktuelle databasefelter).

hilsen Hans
Avatar billede mugs Novice
23. april 2009 - 09:34 #1
Jeg h ar skrevet en artikel om emnet. Der kna du også se, hvordan du henter et formularfelt og sætter det ind i dine sendkommando.

http://www.eksperten.dk/guide/371
Avatar billede Slettet bruger
23. april 2009 - 09:43 #2
Tænker du på word dokument med standardbrev? Det kan lade sig gøre og det er en programmeringsopgave.
Jeg er 3 måder at lave word documentet:

a) Lav en raport der baserer sig på sammen datakilde og postvalg - åbn i viewmode og gem som fil.

b) Lav en skabelon, sæt bogmærker for felter og 'fjernstyr' skabelsen af dokumentet vha vba

c) Lav et flettedokument med datakilden værende posten i formularen - noget med en query med id feltet fra formularen i sql betingelsen.


Hvis b) eller c)
Det der skal anvendes hedder vist automation - følgende fragmenter forudsæter Microsodt Word x.0 object library sat op i references.

sub makeWordFile()
Dim WordObj As word.Application,skabelon
skabelon="<path to .dot file>"
Set WordObj = newOrExisting("Word.Application.8")
    WordObj.Documents.Add Template:=Skabelon, NewTemplate:=False

..
..
do a lot
  WordObj.ActiveDocument.SaveAs fileName:=destfile, FileFormat:= _
            wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
            False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False

end sub


Function newOrExisting(AppType$) As Object
    On Error Resume Next
    Set newOrExisting = GetObject(, AppType)
    If err.Number <> 0 Then
        Set newOrExisting = CreateObject(AppType)
    End If
End Function

Meget af et der skal gøres ved skabelse af word dokument indhold,  kan man finde ud af ved at optage det med macro recorderen, og så snuppe indholdet fra words vba editor -  på den måde må det også kunne aflures hvordan det sendes som mail indenfra word. Det havner nok bare i udbalkken medmindre mail clienten er startet, men det er også det mindste af det.
Avatar billede hanstorp Juniormester
23. april 2009 - 23:09 #3
Hej mugs.
udmærket artikel, men jeg kan ikke se hvordan jeg mixer et standardbrev med formularfelter og får det ind i en brødtekst ellers må du gerne pinde det ud.
Avatar billede mugs Novice
24. april 2009 - 00:12 #4
Hvad mener du med ordet "standardbrev"?
Er det en word-fil eller blot en rapport med formularens felter indsat?
Avatar billede hanstorp Juniormester
24. april 2009 - 09:36 #5
jeg mener en fast tekst hvor der så skal indflettes nogle data fra en formular
Avatar billede hanstorp Juniormester
24. april 2009 - 09:40 #6
ja det kan være en word-fil eller teksten kan lægges ind i en ny formular
Avatar billede mugs Novice
24. april 2009 - 10:03 #7
Hvis du lægger din e-mail kan jeg sende dig et eksempel.
Men jeg mener nu, at artiklen giver dig løsningen.
Avatar billede hanstorp Juniormester
24. april 2009 - 10:21 #8
ja tak , hans.torp@tiscali.dk
Avatar billede mugs Novice
24. april 2009 - 12:05 #9
Koden fra min db. Her ser du, at feltet FLDemail defineres som en string og hentes fra formularen. Denne variabel indsættes herefter i koden:

Dim VAR As String
VARa = Me.FLDemail
DoCmd.SendObject , "", "", VARa, "", "", "Hej", "Dette er en prøve", True, ""
Avatar billede hanstorp Juniormester
24. april 2009 - 11:58 #10
ja tak Mugs, men er det ikke det samme som i din artikel. Jeg kan stadig ikke se ud fra din artikel hvordan jeg mixer et standardbrev med formularfelter og får det ind i en brødtekst så det kan sendes "automatisk" (ved tryk på en kommandoknap).
Avatar billede mugs Novice
24. april 2009 - 12:08 #11
I min artikel kan du læse hvor i koden de forskellige argumenter skal indsættes. Brødteksten er således det 8. argument. Indsæt denne som et felt på samme måde som FLDemail:

DoCmd.SendObject 1 arg , "2 arg", "3 arg", "4arg", "5arg", "6 arg", "7 arg", "8 arg", False, "9 arg"

Idet "1 arg", "2 arg" o.s.v henviser til handlingens argumenter således:

-1. argument er den objekttype du evt. vil vedhæfte.
-2. argument er Objektnavnet på en evt. vedhæftet rapport.
-3. argument er hvilket Outputformat rapporten skal have.
-4. argument er modtagerens e-mailadresse.
-5. argument er Cc adressat.
-6. argument er Bcc adressat.
-7. er e-mailens emne.
-8. er e-mailens tekst (Brødtekst).
-False betyder, at du ikke vil redigere meddelelsen inden afsendelse.
-9. er til markering om benyttelse af en skabelonfil.
Avatar billede hanstorp Juniormester
24. april 2009 - 14:05 #12
Ja men det er jeg helt med på. Men spørgsmålet er hvordan får jeg dannet en tekst til at bestå af fasttekst og formularfelter og fasttekst .... osv. osv.
Avatar billede mugs Novice
24. april 2009 - 14:19 #13
Tag et ubundet felt fra værktøjsklassen og giv den en postkilde som f.eks. Den faste tekst ser du ianførselstegn. Husk at sætte egenskaben KanStrækkes til Ja, og mellemrum opfattes også som tekst:

="Kære " & [FLDfornavn]

Jeg har sendt en ny db. Se RPT2.
Avatar billede hanstorp Juniormester
28. april 2009 - 11:46 #14
Tak for hjælpen Mugs, det virker fint
Avatar billede mugs Novice
28. april 2009 - 13:40 #15
Selv tak - Og tak for point.
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