E-mail küldés Outlookból Wordben tárolt standard szöveg alapján

2016. február 25. - Office Guru

Ha már az előző posztban is VBA-ról volt szó, akkor még melegében folytassuk tovább egy VBA-s olvasói kérdés megválaszolásával, amely nagyjából egyetlen felvetésre keresi a választ: hogyan érhetjük el azt, hogy egy rendszeresen legenerált automatikus e-mailünkbe a szöveget egy WORD dokumentumból illesszük be?

Ebben a posztban egy bizonyos megoldást fogok bemutatni, de ahogy általában mindig, most is léteznek más megoldási utak, ráadásul az én javaslatom a maga módján még egyszerű is, hiszen csak konstans szöveget használok, nem fogom megspékelni folyton változó címzettekkel vagy szövegrészekkel.

VBA-editorba lépve (ALT+F11 legyen jó barátunk), szubrutinunkat a szokásoknak megfelelően kezdjük változók deklarálásával, a hivatalos Microsoft leírásnak megfelelően legyen két változónk a meghívott applikációkra:

Dim word As word.Application
Dim outlook As outlook.Application

Majd legyen két másik változónk egy Word-dokumentum és egy Outlook-mail objektumra:

Dim doc As word.Document
Dim mail As outlook.MailItem

Ha ez megvan, akkor állítsuk is be outlook illetve word változónk kezdő értékét a szintén a hivatalos Microsoft leírásból is kileshető CreateObject funkció segítségével, amely lehetővé teszi, hogy egy másik applikációval dolgozzunk:

Set outlook = CreateObject("Outlook.Application")
Set word = CreateObject("Word.Application")

Ahhoz, hogy lássuk is a másik applikáció sessionjét, az adott applikáció Visible tulajdonságát kell True-ra állítanunk:

word.Visible = True

u01.jpgA fentebb deklarált WORD dokumentumváltozó értékének állítsuk be a lementett, levélszöveget tartalmazó WORD fájlunk írásvédettként megnyitott változatát - a Read-Only paramétert a word.Documents.Open metódus paramétereként tudjuk beállítani.

Set doc = word.Documents.Open(Filename:="C:\......docx", ReadOnly:=True)

Most már nagyon közel a feladat vége, ugyanis most milyen feladat vár még ránk? Meg kell fognunk ebből a WORD doksiból a szövegünket, majd be kell raknunk a vágólapra és utána beilleszteni egy Outlookban megnyitott üzenetbe.

Elsőként fogjuk a doc változónkban beállított WORD-dokumentumunkat, majd Content.Select utasítás segítségével jelöljük ki a tartalmát és a hivatalos leírás szerinti Selection.Copy utasítással pakoljuk a vágólapra:

u02.jpgMi a következő lépés? A WORD tehát már készen áll és be is fejeztük a használatát, most átmegyünk Outlookba, megnyitjuk az e-mailünket, beillesztjük a vágólapról a tartalmat, amit szeretnénk és kész is vagyunk. Elsőként a WORD dokumentumhoz hasonló módon a mail változóba beállított outlook.CreateItem(olMailItem) utasítás segítségével megnyitunk egy e-mailt, amelyet egy With...End With utasítás segítségével formára szabunk:

- megjelenítjük a képernyőn
- beállítunk egy címzettet
- adunk egy tárgyat
- és a legfontosabb lépésként a Word applikációra beállított word változó felhasználásával levelünk Body részét egyenlővé tesszük a WORD-ben kijelölt majd kimásolt tartalommal

u03.jpgMi van még hátra? A biztonság kedvéért zárjuk be a WORD-dokumentumunkat a Close utasítás segítségével, majd az összes változónkat ürítsük ki:

u04.jpgÉs itt a kód szövegként is:

Sub Doksilevel()
Dim word As word.Application
Dim doc As word.Document
Dim outlook As outlook.Application
Dim mail As outlook.MailItem
Set outlook = CreateObject("Outlook.Application")
Set word = CreateObject("Word.Application")
word.Visible = True
Set doc = word.Documents.Open(Filename:="C:\........docx", ReadOnly:=True)
doc.Content.Select
word.Selection.Copy
Set mail = outlook.CreateItem(olMailItem)
With mail
.Display
.To = "officeguruhelp@gmail.com"
.Subject = "Megoldás"
.Body = word.Selection
End With
doc.Close
Set doc = Nothing
Set mail = Nothing
Set outlook = Nothing
Set word = Nothing
End Sub

És ezzel adtunk egy választ egy bizonyos kérdésre, de hangsúlyozom, a fenti egy roppantul leegyszerűsített megoldás, hiszen nincsenek benne hibakezelési utasítások, nincsenek változó részek a szövegben és így tovább, de ennek ellenére ahogy mindig, most is remélem, hogy vannak, akiknek ez segítség lehet. És persze tördeljük szépen a kódunkat, ne úgy ömlesszük, ahogy én tettem fentebb.

u05.jpg

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr98420050

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.