Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Outlook 2003] sluit soms niet goed af na VBA-interventie

Pagina: 1
Acties:

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
Ik heb hier een Windows Terminal Server 2003R2 met daarop Outlook 2003 SP3.
Ik heb hier een VBA-procedure die via Mapi in de default contactpersonenmap een contactpersoon aanmaakt, na eerst te controleren of deze contactpersoon al bestaat in de bewuste map.

Dit werkt meestal prima, echter soms blijft Outlook een beetje 'hangen' en dan gaat het dus mis. Je krijgt dan bij het starten van Outlook, of het uitvoeren van de Access-applicatie volgende melding:

De berichteninterface heeft een onbekende fout gemeld. Als het probleem blijft bestaat start u Outlook opnieuw.

Ik moet dan Outlook afschieten in de taskmanager, daarna doet hij het weer.

Volgende code gebruik ik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Dim olApp As Outlook.Application
Dim olNs As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olItems As Outlook.Items
Dim olItem As Outlook.ContactItem
Dim i As Long
Dim gevonden As Boolean

' Start Outlook. If it is already running, you'll use the same instance...
  Set olApp = CreateObject("Outlook.Application")
' Logon. Doesn't hurt if you are already running and logged on...
  Set olNs = olApp.GetNamespace("MAPI")
  olNs.Logon
 
  Set olFolder = olNs.GetDefaultFolder(olFolderContacts)
  Set olItems = olFolder.Items
  
' loop through contacts in default folder
  gevonden = False
  For i = 1 To olItems.Count
    If olItems.Item(i).Class = olContact Then
      Set olItem = olItems.Item(i)
' contact exists?
        If olItem.User1 = kla__ref And olItem.User2 = Nz(knp__ref) Then
          i = olItems.Count
          gevonden = True
          If MsgBox("Contactpersoon al aanwezig, gegevens updaten?", vbYesNo) <> vbYes Then
            olNs.Logoff
            Set olItem = Nothing
            Set olItems = Nothing
            Set olFolder = Nothing
            Set olNs = Nothing
            Set olApp = Nothing
            Exit Sub
          End If
        End If
    End If
  Next

' Create and Open a new contact if not found
  If Not gevonden Then Set olItem = olApp.CreateItem(olContactItem)
' Setup Contact information...
  With olItem
    .FirstName = Trim(contact!knp__vnm)
    .LastName = Trim(contact!knp__nam)
    .CompanyName = Trim(klant!naam____)
    .User1 = kla__ref
    .User2 = knp__ref
  End With
   
' Save Contact...
  olItem.close (olSave)

' Close everything down properly
  olNs.Logoff
  Set olItem = Nothing
  Set olItems = Nothing
  Set olFolder = Nothing
  Set olNs = Nothing
  Set olApp = Nothing
  Set klant = Nothing
  Set contact = Nothing


Volgens allerlei bronnen op Internet doe ik het precies goed.
Er draait binnen Outlook geen Virusscanner.

Wat kan ik nu nog proberen?

Houdoe


Verwijderd

heb je al eens geprobeerd het pst-bestand te repareren - dit is tenminste wat ik terugvind als je deze foutmelding krijgt bij gewone gebruikersinteractie met outlook?

een andere kwestie is wat er gebeurt als het item dat je wil aanmaken gevonden wordt en de gebruiker bevestigt dat het mag aangepast worden : de lus wordt verder doorlopen en dus klop de verwijzing naar olItem niet meer...

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
We maken gebruik van een exchange systeem, en de fout doet zich niet steeds voor. Alleen wanneer binnen 1 sessie outlook meerdere keren wordt geopend, gesloten, de code uitgevoerd, en dat in willekeurige volgorde. En dan ineens... pats! foutmelding.
De vraag aan de gebruiker, en de update daarna functioneert prima. Het juiste object wordt naar wens aangepast. (de lus wordt beeindigd voortijds, als je goed kijkt, ik stel i op de waarde van het einde van de lus middels i = olItems.count, een trucje wat ik op de Commodore 64 al gebruikte om een for-next-lus te verlaten ;) )

Maar soms... Als outlook binnen de sessie meermaals geopend en gesloten is, dan ineens werkt het niet meer.
Zowel bij het starten van outlook, als bij uitvoer van de code krijg ik defoutmelding.

[ Voor 45% gewijzigd door Witte op 11-04-2009 20:31 ]

Houdoe


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
*** toch maar een kick ***

ik zat te denken, is het mogelijk zonder MAPI of Outlook in Exchange een contactpersoon aan te maken in de default-map van ene gebruiker?

[ Voor 74% gewijzigd door Witte op 17-04-2009 16:03 ]

Houdoe