Zum Inhalt springen

Typ eins Com-Object´s herausfinden


Empfohlene Beiträge

Geschrieben

Hallo,

ich versuche gerade Dateien aus den Öffentlichen Ordnern (Outlook) zu kopieren.

Ich bin inzwischen soweit, dass ich alle Ordner durchlaufe und den Inhalt auch auslesen kann.

Allerdings bekomme ich den Inhalt als System.__ComObject.

Da die Anzahl der verschiedenen Typen überschaubar ist, wollte ich einfach schauen ob sich das Object in die entsprechenden Typen parsen lässt.

z.B.

as Microsoft.Office.Interop.Word.Document;

So, nun bekomme ich, auch wenn es sich garantiert um ein .doc handelt den Fehler:

Fehlermeldung:

Das COM-Objekt des Typs \"System.__ComObject\" kann nicht in den Schnittstellentyp \"Microsoft.Office.Interop.Word.Document\" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID \"{0002096B-0000-0000-C000-000000000046}\" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

Kann ich vielleicht irgendwie direkt aus dem COM-Object den Typen herausbekommen?

Geschrieben
auch wenn es sich garantiert um ein .doc handelt

Wenn dir QueryInterface E_NOINTERFACE zurückgibt, dann handelt es sich nicht um ein Objekt, das Microsoft.Office.Interop.Word.Document implementiert, Garantie hin oder her.

Wo kommt das Objekt denn her?

Geschrieben

Wie meinst du das genau, "wo kommt das Objekt her"?

Ich poste am besten mal den entsprechenden Code:

 //Alle Ordner durchlaufen

for (int i = 1; i < objMapiFolder.Folders.Count; i++) 

{

    //Alle Items in einem Ordner durchlaufen

    for (int y = 1; y < objMapiFolder.Folders[i].Items.Count; y++)

    {

        var item = objMapiFolder.Folders[i].Items[y];


        //E-Mails

        Outlook.MailItem mail = objMapiFolder.Folders[i].Items[y] as Outlook.MailItem;

        if (mail != null)

        {

                ...

        }


        //Word Dateien

        docDocument = objMapiFolder.Folders[i].Items[y] as Word.Document;

        if (docDocument != null)

        {

                ...

        }

    }

}

objMapiFolder.Folders.Items[y] ist dann halt immer das entsprechende Objekt aus dem Ordner.

Geschrieben

Du wirst da kein Word.Document finden. Diese Schnittstelle repräsentiert ein gerade in Word geöffnetes Dokument.

Wenn es sich um einen öffentlichen Ordner handelt, ist es vermutlich ein Outlook.PostItem. Versuch das mal, und dann versuch, ob du über dessen Properties an die eingebettete Word-Datei kommst.

Geschrieben

Besten Dank, das hilft mir schon mal sehr.

Outlook.PostItem postItem = objMapiFolder.Folders[i].Items[y] as Outlook.PostItem;

                    if(postItem != null)

                     postItem.SaveAs("C:/export/test.doc", System.Reflection.Missing.Value);

Ich schwöre, dass ich in dem Ordner eine text.doc liegen hatte und diese auch öffnen konnte (es war auch das erwartete Dokument).

Aber jetzt springt er einfach nicht mehr in die If-Bedingung rein, er sieht das Objekt also plötzlich nicht mehr als postItem an :(

Aber ok, du hast mir bis hier her schon sehr geholfen, die kleine Hürde bekomme ich vor dem Wochenende auch noch hin.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...