VBA Meldung neue Elemente im Postfach

Moderator: ModerationP

VBA Meldung neue Elemente im Postfach

Beitragvon pjo12345 » 15. Nov 2018, 17:49

Moin!

Ich habe hier mal vor einiger Zeit einen VBA Code gefunden, mit dem man ein Postfach abfragen kann und neu eingegangene E-Mails gemeldet werden. Hier mal der Code:

Code: Alles auswählen
Option Explicit
Private WithEvents PublicInboxItems As Items
Private Declare Function sndPlaySound Lib "Winmm.dll" Alias "sndPlaySoundA" ( _
ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Private Declare Function Beep Lib "kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long

 Private Sub Application_Startup()
       Dim objNS As NameSpace
       Set objNS = Application.GetNamespace("MAPI")
       Set PublicInboxItems = GetFolder("xyz@abc.de\Posteingang").Items
       Set objNS = Nothing
 End Sub

 Private Sub PublicInboxItems_ItemAdd(ByVal Item As Object)

         Dim Datum As Date
         Dim Zeit As Date
         Dim Antwort As Integer
         
         Datum = Item.ReceivedTime

         On Error Resume Next
            sndPlaySound "c:\windows\media\tada.wav", 1
            Antwort = MsgBox("Neue Mail empfangen" & vbCrLf & vbCrLf & vbCrLf & "Möchten Sie diese E-Mail jetzt öffnen?", vbYesNo + vbSystemModal + vbInformation)
            If Antwort = 6 Then
               Item.Display
               Item.Activate
            End If
         Set Item = Nothing
 End Sub

 Public Function GetFolder(strFolderPath As String) As MAPIFolder
   ' folder path needs to be something like Public Folders\All Public Folders\Company\Sales"
   Dim objApp As Outlook.Application
   Dim objNS As Outlook.NameSpace
   Dim colFolders As Outlook.Folders
   Dim objFolder As Outlook.MAPIFolder
   Dim arrFolders() As String
   Dim I As Long
   On Error Resume Next

   strFolderPath = Replace(strFolderPath, "/", "\")
   arrFolders() = Split(strFolderPath, "\")
   Set objApp = CreateObject("Outlook.Application")
   Set objNS = objApp.GetNamespace("MAPI")
   Set objFolder = objNS.Folders.Item(arrFolders(0))
   If Not objFolder Is Nothing Then
     For I = 1 To UBound(arrFolders)
       Set colFolders = objFolder.Folders
       Set objFolder = Nothing
       Set objFolder = colFolders.Item(arrFolders(I))
       If objFolder Is Nothing Then
         Exit For
       End If
     Next
   End If

   Set GetFolder = objFolder
   Set colFolders = Nothing
   Set objNS = Nothing
   Set objApp = Nothing
 End Function






Bisher hat das Makro unter Windows 7 und Outlook 2010 tadellos funktioniert. Jetzt mit Windows 10 und Outlook 2016 kommt diese Fehlermeldung:
Fehler.jpg


Der Fehler wird angezeigt in der Zeile:
Code: Alles auswählen
 Set PublicInboxItems = GetFolder("xyz@abc.de\Posteingang").Items
(In meinem Code ist natürlich die richtige E-Mailadresse drin!)

Ich komme da einfach nicht weiter. Es muss sich irgendetwas von WIN7/Outlook 2010 zu WIN10/Outlook 2016 geändert haben. Hat einer 'ne Idee?

Danke schon mal.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
---------------------------------------------
Gruß aus Rostock
pjo12345
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13
Registriert: 27. Apr 2016, 03:06

Re: VBA Meldung neue Elemente im Postfach

Beitragvon Michael Bauer » 15. Nov 2018, 21:01

Hallo,
die Funktion GetFolder findet "xyz@abc.de\Posteingang" nicht. Das hat nichts mit den Versionen zu tun.
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6374
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: VBA Meldung neue Elemente im Postfach

Beitragvon pjo12345 » 15. Nov 2018, 21:49

Auf dem WIN7/Outlook2010 läuft es aber. Ist denn die Bezeichnung des Postfaches in Outlook 2016 irgendwie anders?
---------------------------------------------
Gruß aus Rostock
pjo12345
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13
Registriert: 27. Apr 2016, 03:06

Re: VBA Meldung neue Elemente im Postfach

Beitragvon Michael Bauer » 16. Nov 2018, 07:38

Setze einen Haltepunkt in der Funktion und gehe dann mit f8 Schritt für Schritt durch. Du kannst Dir z.B. im Lokal-Fenster die Inhalte der Variablen ansehen.
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6374
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: VBA Meldung neue Elemente im Postfach

Beitragvon pjo12345 » 16. Nov 2018, 14:19

Moin!

Habe das mit Einzelschritten verfolg. Hängen bleibt es in der Function GetFolder bei der Zeile
Code: Alles auswählen
 Set objApp = CreateObject("Outlook.Application")


Auf dem WIN7/Outlook2010 Rechner wird objApp mit "Outlook" angezeigt.

Hier mal das Überwachungsfenster:
vba.png


Der einzige Unterschied zum Outlook 2016 ist die Zeile DefaultProfileName. In Outlook 2010 steht dort "Default Outlook Profile" und bei Outlook 2016 steht dort mein Login-Name von Windows.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
---------------------------------------------
Gruß aus Rostock
pjo12345
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13
Registriert: 27. Apr 2016, 03:06

Re: VBA Meldung neue Elemente im Postfach

Beitragvon Michael Bauer » 16. Nov 2018, 16:09

Was heißt denn "hängenbleiben"? Fehlermeldung?
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6374
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: VBA Meldung neue Elemente im Postfach

Beitragvon pjo12345 » 16. Nov 2018, 16:41

Die selbe wie in Post 1.
---------------------------------------------
Gruß aus Rostock
pjo12345
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13
Registriert: 27. Apr 2016, 03:06

Re: VBA Meldung neue Elemente im Postfach

Beitragvon Michael Bauer » 17. Nov 2018, 10:30

Hallo,

die Variable objApp kann nicht gesetzt sein, wenn CreateObject einen Fehler zurückgibt. Und das heißt, dass Dir das Lokalfenster keine Werte für die objApp-Eigenschaften anzeigen kann.

Unabhängig davon, Du brauchst CreateObject nicht, weil das ganze in Outlook läuft. Outlook muss also nicht erst oder nochmal gestartet zu werden. Lösche die Zeile, die Deklaration von objApp und ersetze alle anderen objApp durch Application.
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6374
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: VBA Meldung neue Elemente im Postfach

Beitragvon pjo12345 » 17. Nov 2018, 14:29

Danke für die Tipps. Da ich nicht so der VBA Guru bin, kannst du das vielleicht ein bisschen präzisieren? Also wo im Code ich was ändern muss. Vielen Dank. Werde es dann probieren und berichten.
---------------------------------------------
Gruß aus Rostock
pjo12345
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13
Registriert: 27. Apr 2016, 03:06

Re: VBA Meldung neue Elemente im Postfach

Beitragvon Michael Bauer » 17. Nov 2018, 19:56

Du brauchst CreateObject nicht...Lösche die Zeile, die Deklaration von objApp und ersetze alle anderen objApp durch Application

Das wirst Du hinbekommen.
Michael Bauer
Add-Ins für Microsoft Outlook
Benutzeravatar
Michael Bauer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6374
Registriert: 03. Feb 2005, 15:07
Wohnort: Vollersode

Re: VBA Meldung neue Elemente im Postfach

Beitragvon DerHoepp » 19. Nov 2018, 11:22

Moin,

du musst GetFolder() auch auf ein Parentobjekt anwenden. Wahrscheinlich deinen objNS-Namespace.
Dann kann aber nicht die von dir zitierte Zeile den Fehler verursachen:
Set objApp = CreateObject("Outlook.Application")

Michael erklärt dir mögliche Fehler für die von dir genannte Zeile. Dies ist aber sehr wahrscheinlich nicht die, die den Fehler verursacht (sonst könnte der Überwachungsausdruck ja nicht funktionieren).

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8341
Registriert: 14. Mai 2013, 11:08

Re: VBA Meldung neue Elemente im Postfach

Beitragvon pjo12345 » 15. Dez 2018, 10:20

So, 3 Wochen Urlaub sind vorbei. Es geht frisch ans Arbeiten.
Habe das, so wie von Michael Bauer vorgeschlagen, umgesetzt und es funktioniert.

Danke
---------------------------------------------
Gruß aus Rostock
pjo12345
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13
Registriert: 27. Apr 2016, 03:06


Zurück zu Outlook Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste