Outlook programmeren vanuit Access VBA

Status
Niet open voor verdere reacties.

reneemettrie

Terugkerende gebruiker
Lid geworden
1 aug 2006
Berichten
1.233
Ik heb ergens op het Internet code gevonden om vanuit Access een mail te sturen.
Het werkt, maar ik begrijp niet echt alles (heb heel weinig kennis van Automation en helemaal geen kennis van Outlook VBA)

Code begint als volgt:

Code:
Dim OutApp As Object
Dim OutMail As Object
'On Error GoTo fout
Set OutApp = CreateObject("Outlook.Application")

Mag je de eerste lijn vervangen door
Code:
Dim OutApp As Outlook.Application
Zo ja, wat is het verschil?
Herinner me heel vaag iets over early en late binding, heeft het daarmee te maken?
Wat zijn de voor- en nadelen van beide?
Ik vind het voordeel van Dim OutApp As Outlook.Application dat je, na het typen van "OutApp.", een lijstje krijgt van methods en properties?

Mag je de tweede lijn vervangen door?
Code:
Dim ObjMail As Outlook.MailItem

Mag je de laatste lijn vervangen door?
Code:
Set OutApp = New outlook.Application
Zo ja, is er een verschil tussen de 2 commando's?
Waarom eigenlijk en nieuwe instantie maken?


Vervolg van de code:
Code:
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
'0 = olMailItem
 
Je vraag gaat inderdaad over het verschil tussen Late Binding en Early Binding. Één van de voordelen van EB is dat je, zoals je gemerkt hebt, de objecten uit de IntelliSense kunt halen. Ook hoef je de objectnummers niet te weten. CreateItem(0) zegt nu eenmaal minder dan CreateItem(olMailItem). Daarnaast is EB marginaal sneller in de verwerking, omdat de objecten al geladen zijn (niet voor niks heet het 'early binding').
Maar EB heeft ook nadelen, waarvan een van de grotere is dat de juiste bibliotheek geladen moet zijn. Zet je een db over op een pc met een andere Office versie, dan kan het zijn dat de db niet meer werkt omdat je de verkeerde versie laadt. De uitwisselbaarheid is dus beperkt.

Daarom gebruiken veel ontwikkelaars Late Binding, omdat je dan geen last hebt van versies. Nadeel is o.a. dat je geen enumeraties kunt gebruiken, maar de indexnummers moet gebruiken. Die zijn wel op te zoeken natuurlijk, maar het werkt wat lastiger. Bij LB wordt de opdracht pas uitgevoerd als hij wordt aangeroepen, dus LB kan wat langzamer zijn dan EB, maar met de huidige systemen merk je daar bar weinig van.

Kies wel één methode en gebruik ze niet door elkaar!
 
Je kunt geen Early Binding gebruiken als je niet eerst de bibliotheek aanzet. Daarnaast kun je, zoals ik al zei, geen enumeraties gebruiken bij LB en moet je dus indexnummers weten. Die moet je dan alsnog opvragen.
Vermoedelijk heeft jouw favoriete teacher mijn cursus Access gelezen, want daarin stel ik hetzelfde voor :). Overigens alleen voor databases waarvan het gebruik onbekend is; meestal is het geen enkel probleem om met Early Binding te werken. Dus waarom zou je alles dan ombouwen?
 
Iedereen bedankt voor de uitleg en de link!
Was erg nuttig!
Als niet-programmeur zal ik het maar bij EB houden :cool:
 
Mooi gezegd OctaFish,
2 vragen, heb je een link naar jouw bibliotheek, dat lijkt mij wel interessant leesvoer en het aanvinken van de referentie via tools->references -> microsoft outlook 14.0 object librarie , dat zet toch de bibliotheek aan, want dat bedoelde ik met de object referentie aanvinken.
 
Toch nog een vraagje: waarom moet je een nieuwe instantie instantie maken? is dat om niet in de clinch te geraken met Outlook die al eerder gestart was?
 
@Renee: je moet natuurlijk helemaal niets... als jij 100% zeker weet dat Outlook altijd open staat, kun je gelijk aan de slag. Maar wie is dat nu? Je kunt ook met code eerst controleren of je al een Outlook sessie open hebt en die gebruiken, of anders alsnog een sessie maken. Of, zoals in de code, denken: ammehoela, ik maak altijd even een nieuwe sessie, dan werkt de code altijd. De sessie wordt daarna toch weer afgesloten, dus zo erg is dat allemaal niet. Maar je komt dus niet in de clinch met een andere Outlook sessie die toevallig nog open staat.

@hellboy:
De cursus staat in de Handleidingen sectie, die je vanaf de hoofdpagina kan vinden. In de Office Suite sectie. En je hebt gelijk: zodra je de bibliotheek aanvinkt, kun je met EB werken. En de IntelliSense.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan