12. december 2006 - 12:49 Der er 12 kommentarer og
1 løsning

Send mail fra Word vha. VBA

Hej,

Jeg har et worddokument, som brevflettes med en .RTF-datakilde.

Denne fil indeholder kun én post, så der dannes kun ét brev.

Jeg vil gerne - fra VBA - kunne skifte mit dokument til Mail (f.eks. med kommandoen ActiveWindow.EnvelopeVisible = True), indsætte emailadressen, BCC og subject, vedhæfte en fil og derefter beholde filen åben til redigering (altså ikke sende den automatisk).

Det, som jeg mangler, er en måde at indsætte TO, BCC og Subject på fra VBA.

Jeg kan desværre slet ikke finde nogle kommandoer til dette og makrooptageren springer let og elegant over denne del, når man forsøger at få den til at generere koden!! :(

Hjælp...!!
Avatar billede supertekst Ekspert
13. december 2006 - 09:30 #1
Måske kan du anvende dette... Udviklet i word 2003 (reference til Microsoft Outlook 11.0 Object Library)

Sub klartTilmail()
Dim mailApp, Namespace, nyMail
Dim modtager, Emne, ccModtager, bccModtager, vedhftFiler, indhold

        modtager = "pb@supertekst-it.dk"                        'Test tekster
        Emne = "Test Mail"                                      '
        ccModtager = "xx@mail.dk;yy@mail.dk"                    '
        bccModtager = "aa@mail.dk;bb@mail.dk"                  '
        vedhftFiler = "D:\Eksperten\0510TilLabels.xls"          '
       
        indhold = ActiveDocument.Content
       
        Set mailApp = CreateObject("Outlook.Application")
        Set Namespace = mailApp.GetNamespace("MAPI")
        Set nyMail = mailApp.CreateItem(olMailItem)
       
Rem Modtager
        Set mailModtager = nyMail.Recipients
        mailModtager.Add modtager
 
Rem CC
        Set mailcc = nyMail.Recipients.Add(ccModtager)
        mailcc.Type = olCC

Rem BCC
        Set mailbcc = nyMail.Recipients.Add(bccModtager)
        mailbcc.Type = olBCC
       
Rem Emne
        nyMail.Subject = Emne
       
Rem Vedhft.fil - p.t. kun een fil
        If vedhftFiler <> "" Then
            Set att = nyMail.Attachments
            att.Add vedhftFiler
        End If
       
Rem Indhold
        nyMail.Body = indhold
       
        nyMail.Display                              'visning af mail
'        nyMail.Send                                'send mailen
End Sub
19. december 2006 - 23:34 #2
Hej Supertekst,

tak for dit forslag, som bringer mig et godt stykke på vej.

Jeg har dog det problem, at indholdet af worddokumentet er i HTML-format (med grafik og rammer m.m.)
Når jeg kører din kode, forsvinder al formatteringen og jeg ser kun den rene tekst.

Kan man løse problemet ved at erklære variablen "indhold" korrekt? Og hvad skal den i så fald være erklæret som?

Eller har du andre forslag?
Avatar billede supertekst Ekspert
20. december 2006 - 09:02 #3
Ser på det - vender tilbage...
Avatar billede supertekst Ekspert
20. december 2006 - 10:16 #4
Rem Version 2
Rem =========
Sub klartTilmail()
Dim mailApp, Namespace, nyMail
Dim modtager, Emne, ccModtager, bccModtager, vedhftFiler, indhold

        modtager = "pb@supertekst-it.dk"                        'Test tekster
        Emne = "Test Mail"                                      '
        ccModtager = "xx@mail.dk;yy@mail.dk"                    '
        bccModtager = "aa@mail.dk;bb@mail.dk"                  '
        vedhftFiler = "D:\Eksperten\0510TilLabels.xls"          '

Rem kopier dokumentets "forside" til udklipsholder - ophæv markering
        Selection.WholeStory
        Selection.Copy
        Application.Browser.Previous

        Set mailApp = CreateObject("Outlook.Application")
        Set Namespace = mailApp.GetNamespace("MAPI")
        Set nyMail = mailApp.CreateItem(olMailItem)
       
Rem Modtager
        Set mailModtager = nyMail.Recipients
        mailModtager.Add modtager
 
Rem CC
        Set mailcc = nyMail.Recipients.Add(ccModtager)
        mailcc.Type = olCC

Rem BCC
        Set mailbcc = nyMail.Recipients.Add(bccModtager)
        mailbcc.Type = olBCC
       
Rem Emne
        nyMail.Subject = Emne
       
Rem Vedhft.fil - p.t. kun een fil
        If vedhftFiler <> "" Then
            Set att = nyMail.Attachments
            att.Add vedhftFiler
        End If
           
        nyMail.Display                              'visning af mail
       
Rem Indhold - hentes fra udklipsholder
        SendKeys "%Rn", True                        'indsæt fra udklipsholder
       
'        nyMail.Send                                'send mailen
End Sub
20. december 2006 - 12:00 #5
Hej Supertekst,

Det virker umiddelbart inde fra Word, selvom jeg ikke er så glad for sendkeys.
Jeg ændrede sendkeys til ^v, da den er mere sprog-uafhængig end %rn (den duer jo kun på dansk)

Jeg afprøver det lige senere, når jeg kører den fra Access, som den skal. Men det burde ikke gøre nogen forskel, når koden er rettet til.

Så skal du nok få point :o)
20. december 2006 - 12:01 #6
Sig mig lige: er du konsulent? Evt freelancer?
Avatar billede supertekst Ekspert
20. december 2006 - 13:58 #7
Ok
Ja - har egen virksomhed - etabl. 1978
21. december 2006 - 13:58 #8
Hej igen,

Det virker fint - tusind tak :)

Hvad hedder din virksomhed?
Klik evt på mit navn og se mit minisite.

Skriv, hvis du er interesseret i et samarbejde - jeg er konstant på udkig efter gode office-konsulenter :o)
Avatar billede supertekst Ekspert
21. december 2006 - 14:13 #9
1) Glæder mig - selv tak
2) Supertekst
3) Kender den godt
4) Det gør jeg...
05. januar 2007 - 12:33 #10
hmm, det virker ikke, hvis brugeren benytter Word som mail-editor.

Har du en løsning på det?
Der er 200 point ekstra på højkant
Avatar billede supertekst Ekspert
05. januar 2007 - 13:52 #11
Skal forsøge....
05. januar 2007 - 14:07 #12
:o)
09. januar 2007 - 09:31 #13
Jeg har prøvet at aflæse om Outlook er konfigureret til at benytte Word som editor og derefter skifte editoren fra VBA. Men jeg kan ikke finde de rigtige kommandoer.
Jeg kan aflæse om en åbn mail er i Wordformat eller ej (med ActiveInspector.IsWordMail), men jeg skal jo helst vide det inden, så jeg kan skifte indstillingen inden mailen oprettes.
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