Toon posts:

[VBA] Outlook applicatie detecteren en afsluiten

Pagina: 1
Acties:
  • 254 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een programma dat outlook2000 gebruikt om emails te verzenden. Nu wil ik dat als ik het programma start, er eerste gekeken wordt of outlook al is opgestart. Zo ja, dan moet het programma eerst worden afgesloten en daarna weer worden opgestart, om zo de nieuwste registry gegevens te gebruiken (ik gebruik de registry om een nieuw account aan te maken en/of van account te wisselen. Ik merk dat outlook dit alleen bij het opstarten verwerkt, niet tijdens een sessie)

Nu kan het op de volgende, wat lompe manier:
Dim olApp As Outlook.Application
Dim oItem As Outlook.MailItem
Set olApp = New Outlook.Application
olApp.Quit
Set olApp = Nothing
Set olApp = New Outlook.Application
Set oItem = olApp.CreateItem(olMailItem)
....

Het werkt alsvolgt: als set olapp = new outlook.application wordt aangeroepen, wordt er OF een nieuwe (verborgen) applicatie aangemaakt, OF als er al een applicatie draait, wordt er een referentie naar deze applicatie gemaakt.
Daarna wordt het programma sowieso afgesloten, en daarna weer opnieuw opgestart, met de nieuwe registry settings.

Op zich werkt het wel, maar mooier zou zijn als ik eerst kan detecteren of OUTLOOK al draait, en alleen dan het programma af te sluiten.

Weet iemand hier een simpele manier voor?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 04-09 10:21

mulder

ik spuug op het trottoir

Een GetObject, een Error Resume Next en een Err.Number kunnen jou vertellen of al een Outlook is gestart.

oogjes open, snaveltjes dicht


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
idd een GetObject can do the job.
Als je het slim programmeert heb je ook geen On error resume next nodig.
code:
1
2
3
4
5
6
7
8
9
Voorbeeld
Set olApp = GetObject("Outlook.application")
if olApp = Nothing then
  ' Outlook is niet actief

else
  ' Outlook actief
  olApp.quit
end if

It’s nice to be important but it’s more important to be nice


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 04-09 10:21

mulder

ik spuug op het trottoir

euuh, GetObject raised toch een error als er geen instantie gevonden is?

oogjes open, snaveltjes dicht


Verwijderd

Het mooie van een GetObject is dat je niet eens het Error object hoeft af te vragen. Dit ding heeft namelijk twee manieren van aanroepen:

Met deze wordt de draaiende instance van Outlook opgepakt en anders wordt er een nieuwe aangemaakt:
set olApp = GetObject("", "Outlook.Application")

Met deze kan je wel een Error verwachten en die dan weer gebruiken door bijvoorbeeld een CreateObject toe te passen.

set olApp = GetObject(, "Outlook.Application")

VB is zo mooi B-)