CreateItemFromTemplate // Datei kann nicht geöffnet werden

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von devebene.

    CreateItemFromTemplate // Datei kann nicht geöffnet werden

    Guten Morgen in die Runde!

    das ist mein erster Beitrag in diesem Forum. Also gebe ich mir mal richtig Mühe ... :)

    Ich entwickle mit Microsoft Visual Studio Community 2022 (64-Bit), derzeit Version 17.8.6 ein VSTO-AddIn für Outlook. Das ist mein erstes VB.Net Projekt und folglich auch mein erster Kontakt mit Visual Studio.

    Der bisherige Fortschritt verlief ohne Komplikationen, soll heißen, im Debug-Modus war der Code funktional. Also habe ich das erste Mal ein Setup-Paket zu erstellen und zu installieren versucht. Seitdem wirft diese Zeile:

    Quellcode

    1. ​MyItem = CType(myOLApp.CreateItemFromTemplate(GetPathToTemplates() & WantedMailItem), Outlook.MailItem)


    diesen Fehler:
    ​System.Runtime.InteropServices.COMException
    HResult=0x80030002
    Nachricht = Die Datei 'C:\Users\jsm\AppData\Roaming\Microsoft\Templates\E-Mail Vorlagen\20231002 NEUES ...' kann nicht geöffnet werden. Möglicherweise ist die Datei bereits geöffnet, oder Sie sind nicht berechtigt, die Datei zu öffnen.

    Klicken Sie mit der rechten Maustaste auf den Dateiordner, und klicken Sie dann auf 'Eigenschaften', um Ihre Berechtigungen zu überprüfen.
    Quelle = <Die Ausnahmequelle kann nicht ausgewertet werden.>
    Stapelüberwachung:
    <Die Ausnahmestapelüberwachung kann nicht ausgewertet werden.>


    Diese Zeile ist wiederum Teil der nachfolgenden Funktion. Dabei liefert die Funktion GetPathToTemplates den Pfad zum Template WantedMailItem.

    VB.NET-Quellcode

    1. Private Function OpenMailItem(WantedMailItem As String) As Boolean
    2. Dim MyItem As Outlook.MailItem
    3. 'Dim myOLApp As Microsoft.Office.Interop.Outlook._Application
    4. Dim myOLApp As Outlook.Application
    5. myOLApp = CType(CreateObject("Outlook.Application"), Outlook.Application)
    6. WriteLog("Zugriff auf Template " & WantedMailItem & ".")
    7. MsgBox(GetPathToTemplates() & WantedMailItem)
    8. MyItem = CType(myOLApp.CreateItemFromTemplate(GetPathToTemplates() & WantedMailItem), Outlook.MailItem)
    9. MyItem.Display()
    10. WriteLog("Template " & WantedMailItem & " geöffnet.")
    11. OpenMailItem = True
    12. End Function​


    Verwirrend ist, dass ich beim Start des mit Code des gleichen AddIns prüfe, ob das/die Laufwerke, Verzeichnisse und/oder Templates vorhanden und/oder verändert sind. Davon abhängig erzeuge ich ggf. Verzeichnisse und kopiere dir Templates (.oft) von einem Netzlaufwerk in das lokale Verzeichnis. Das funktioniert problemlos. Schreibrechte sind also vorhanden. Die Prüfung im Explorer bestätigt mir Vollzugriff.

    Auch das manuelle Öffnen der gleichen Templates über Outlook->Neue Elemente ... funktioniert wunderbar. Das entspricht m. E. der Funktion CreateItemFromTemplate.

    Mit Doppelklick im Explorer geht es sowieso ...

    Vorsichtshalber habe ich die Templates und Verzeichnisse auch noch mal neu von Hand erzeugt. Natürlich ohne Ergebnis.

    Auch habe ich über Einstellungen->Apps und Features das AddIn deinstalliert. Auch ohne Veränderung.

    Nach meiner Lebenserfahrung - der Code lief ja schon - habe ich mir dieses Problem vermutlich selbst erzeugt und es ist letztlich nur eine Kleinigkeit in irgendeiner Einstellung. Hat irgendjemand hier schon Bekanntschaft mit diesem Problem gemacht und eine Lösung gefunden?

    Vielen Dank für Eure Unterstützung!
    Vielleicht liegt es daran.
    In VSTO-Addins wird automatisch eine Globals-Klasse erstellt, damit hast du direkten Zugriff auf deine Hostanwendung.
    Somit musst du Outlook nicht jedes mal selbst in­s­tan­zi­ie­ren.

    Zeile 10 sieht dann z.B. so aus (Zeilen 5 & 7 sind dann nicht mehr nötig)

    VB.NET-Quellcode

    1. MyItem = CType(Globals.ThisAddIn.Application.CreateItemFromTemplate(GetPathToTemplates() & WantedMailItem), Outlook.MailItem)
    Danke für den Tip!

    Das spart zwei Zeilen Code, produziert aber leider dennoch den gleichen Fehler.

    ----------------------
    Nachtrag: Das Problem hat sich erledigt.
    In meiner Funktion GetPathToTemplates() habe ich mir selbst einen Fehler eingebaut. So lieferte sie einen falschen Pfad. Das lief logischerweise schief und führte zum Fehler.

    Immerhin habe ich meinen Error selbst gefunden und bin wieder mit mir im Reinen.

    Vielen Dank an alle, die Energie ihrer Synapsen auf dieses Problem geworfen haben!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „devebene“ ()