"Workaround" für Outlook-Import (.saveas) gesucht

Moderator: ModerationP

"Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Snarfensia » 10. Dez 2018, 12:37

Hallo in die Runde...

Nachdem ich <leider> meinen Nutzernamen ändern musste komme ich gleich mit einer Frage.

Es geht um den Outlook-Import von Mails in Excel.

Dies klappt soweit ganz gut, auch kann ich z.B. die Überschriften und die Mailanhänge auslesen.
Leider nur(!) das.
___________________________


Die hiesige Firmenpolitik lässt leider bestimmte Office-Anweisungen (Office2016) zwischen den einzelnen Anwendungen nicht zu.
Das führte beispielsweise dazu, dass ich die ".send" Anweisung beim Versenden von Mails aus Excel nicht nutzen konnte und so über ".Display" und "SendKeys" gehen musste :twisted: :twisted: :twisted:


Das gleich passiert mir jetzt bei dem Mailimport.
Wie oben beschrieben kann ich die einzelnen Mails zwar auslesen und als Outlook-Objekte weiter verarbeiten, doch leider "fehlen" gewisse Informationen wie z.B. der Absender und, das wichtigste, der ".body" (komischerweise sind die Mailanhänge auslesbar).

Auch verschiedene Versuchen der Formatänderung des Bodys oder einlesen in ein Array o.Ä. brachten keinen Erfolg.

Wenn ich versuche, das Objekt mittels "MailItem.SaveAs Pfad, olMSG" zu speichern schmeißt Excel mir den Fehler 287 (Objektfehler) raus.

"MailItem.Display" funktioniert auch mit dem ".body"-Text wiederrum.
Dies erscheint logisch, da das ".Display" die Outlook Funktion aufruft, aber das selbe Objekt einmal mit kompletten Body bei Display
und ohne beim Objekt?
Hätte eigentlich gedacht, dass ich den Body auch nicht angezeigt bekomme da er in dem Objekt ja nicht vorhanden ist...

Hier könnte ich wieder mit "SendKeys" arbeiten nur müsste ich, da automatisierte Abarbeitung", jedes mal einen Dateinamen abfragen.


Gibt es hierzu einen Workaround der es eventuell auch schafft, mir den ".body" einer Mail anzeigen zu lassen?

Intensive Suche in entsprechenden Foren führt mich nur immer wieder zu SendMail-Problemen :D


Grüße und vielen Dank,
Snarf

____

P.s.:
Kann leider keine Datei hinzufügen, sonst hätte ich hier einmal einen Screenshot der Objektüberwachung hinzugefügt.

Hier die wichtigsten 2 Sachen in Textform..

MailItem.Body = <>
MailItem.BodyFormat = olFormatHTML
MailItem.HTMLBody = <>
.
.
.
Snarfensia
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 10. Dez 2018, 12:06

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon mmarkus » 10. Dez 2018, 17:57

Snarfensia hat geschrieben:Die hiesige Firmenpolitik lässt leider bestimmte Office-Anweisungen (Office2016) zwischen den einzelnen Anwendungen nicht zu.
Das führte beispielsweise dazu, dass ich die ".send" Anweisung beim Versenden von Mails aus Excel nicht nutzen konnte und so über ".Display" und "SendKeys" gehen musste :twisted: :twisted: :twisted:


Dieses Verhalten entspricht doch der Standard Einstellung von Outlook.


Snarfensia hat geschrieben:
MailItem.Body = <>
MailItem.BodyFormat = olFormatHTML
MailItem.HTMLBody = <>
.
.
.


Ist das jetzt wirklich ein Code wie du in verwendest?
Grundsätzlich ist das weder lauffähig geschweige denn kompilierbar.
Vielleicht kannst du einen Code zeigen wie du ihn verwendest und zwar im verständlichen Zusammenhang.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1828
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Snarfensia » 10. Dez 2018, 22:11

Hallo mmarkus.

Vielen Dank für die Antwort.
Leider kann ich im Moment nicht mehr sagen, da ich über Mobiltelefon schreibe....
Aber nur so viel...

mmarkus hat geschrieben:Dieses Verhalten entspricht doch der Standard Einstellung von Outlook.

Das kann durchaus sein.
Ich bin ja überhaupt froh, auf die verschiedenen Postkörbe zugreifen zu können und z.B. Betreff, Eingangsdatum, Mailanhänge und verschiedene andere Dinge zugreifen zu können, obwohl der externe Zugriff auf Outlook in den Sicherheitseinstellungen permanent unterbunden ist, und Excel ist in dem Moment ja ein externes Programm :)

Im anderen Fall müsste ich ja komplett zugreifen können.
Nur eben der Absender und der Body bzw. die Saveas Methode funktionieren nicht.
Neben meinem eigenen Code habe ich natürlich viele andere fertige Democodes dann ausprobiert wie z.B. die 3 Teile von https://www.rholtz-office.de/outlook/email_auslesen_teil1
Hier auch alle 3 Teile.

mmarkus hat geschrieben:Ist das jetzt wirklich ein Code wie du in verwendest?
Grundsätzlich ist das weder lauffähig geschweige denn kompilierbar.
Vielleicht kannst du einen Code zeigen wie du ihn verwendest und zwar im verständlichen Zusammenhang.


Natürlich ist der nicht lauffähig, denn das ist, wie ich schon schrieb, ein Auszug aus dem Überwachungsfenster von dem Mailobjekt.

Im Designer gibt es ja auch ein Tool, dass direkt auf Outlook zugreift und die Mails ausliest. Da funktioniert das Auslesen des Absenders immerhin :)

Aber wie gesagt, trotz auch funktionierenden Codes aus Beispielsanwendungen wirft die SaveAs Methode bei mir den Fehler raus, obwohl Pfad als auch Methode stimmen.
Und diese war analog dem .send Befehl, den ich ja mittels Display und sendkeys umgehen konnte:)

Aber vielen Dank noch einmal für die Hilfe,
Snarf
Snarfensia
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 10. Dez 2018, 12:06

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon mmarkus » 12. Dez 2018, 08:12

Snarfensia hat geschrieben:obwohl der externe Zugriff auf Outlook in den Sicherheitseinstellungen permanent unterbunden ist


Wenn dem so wäre, würde es mit Sicherheit nicht funktionieren.

Das mit dem Send ist schon ewig so. Vielleicht teilst du aber mal deine Outlook Version mit, davon hängst das Verhalten ja auch noch ab.

Zum Rest, solltest du einfach mal den Code zeigen.
Aber mach das gleich im richtigen Forum.
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1828
Registriert: 16. Apr 2012, 16:07
Wohnort: Oberösterreich

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Snarfensia » 03. Jan 2019, 09:28

Hallo in die Runde und fröhliches Neues ... :D

Ich melde mich wieder zurück, da ich wieder bei (*fast*) demselben Problem hänge, diesmal mit dem Auslesen einer "*.msg" Datei.
Auch hier habe ich wie oben Probleme beim Auslesen des Bodys ...

Hier gibt er mir auch wieder den "Anwendungs- und Objektdefinierten Fehler" wieder....
(Leider ist das offizielle Forum für solche Anfragen immer noch gesperrt, deswegen hier)...

Den Code habe ich via VBA in Excel geschrieben.
Versionen:
OFFICE Standard 2016 mit Office Produkten

Verweise (Outlook 16.0 Object Library und HTML Object Library) sind gesetzt (neben anderen)...

Code: Alles auswählen
  Dim objOutlook      As Outlook.Application
  Dim objOutlookItem  As Outlook.MailItem
 
  Set objOutlook = New Outlook.Application
  If Not objOutlook Is Nothing Then
'   Set objOutlookItem = objOutlook.Session.OpenSharedItem(Dat.Path)
    Set objOutlookItem = objOutlook.CreateItemFromTemplate(Dat.Path)
    If Not objOutlookItem Is Nothing Then
'     objOutlookItem.display
      MsgBox objOutlookItem.body
      objOutlookItem.Close olDiscard
    End If
    Set objOutlookItem = Nothing
    objOutlook.Quit
  End If
  Set objOutlook = Nothing


Dat.Path enhält den (richtigen) Pfad zur ".msg" Datei.
Abbruch bei "MsgBox objOutlookItem.body"
Der Überwachungsausdruck des "objOutlookItem" liefert einige Werte, aber eben leider nicht den "Body" bzw. den "HTMLBody"...

Hinweis zu dem auskommentierten Code:

- Beide "Set objOutlookItem " liefern denselben Fehler...

- objOutlookItem.display zeigt die ausgewählte ".msg" richtig (!) mit body im Outlook-Fenster an.
Selbst ein Zugriff auf das neue Outlook-Fenster und dem Auslesen des dortigen Bodys funktioniert nicht (dirty)...


Google:

Dieses Problem scheint ab 2010 zu existieren (auch auf internationalen Seiten), aber so einen richtigen Lösungsansatz hat noch keiner gepostet... (Zumindest keiner, der bei mir funktionieren würde...).


Wieder einmal Danke,
Grüße
Snarf aka. Matthias
Snarfensia
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 10. Dez 2018, 12:06

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon DerHoepp » 03. Jan 2019, 12:14

Moin,

was ist Dat für ein Objekt?
Wie kann die .Display-Methode funktionieren, wenn du keinen Objektverweis setzen kannst? Das widerspricht sich doch.

Viele Grüße
derHöpp
PS: im übrigen gehört die Frage eigentlich ins Outlook-forum, da das OL-Objektmodell betroffen ist.
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8820
Registriert: 14. Mai 2013, 11:08

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Gast » 03. Jan 2019, 13:05

DerHoepp hat geschrieben:Moin,
was ist Dat für ein Objekt?

"Dat.Path" ist ein Objekt aus dem FileSystem und enthält nur, wie ich schon schrieb, den kompletten Pfad zur msg Datei...
Könnte diesen auch mit "C:\Test\test.msg" reinschreiben.

DerHoepp hat geschrieben:Moin,
Wie kann die .Display-Methode funktionieren, wenn du keinen Objektverweis setzen kannst? Das widerspricht sich doch.

Eben, deshalb bin ich ja so am verzweifeln...
Selbst auf die Anhänge in der .msg Datei kann ich zugreifen, nur auf den Body nicht... :roll:

99% der Probleme lösen sich durch Nachdenken bzw. exzessives Googeln, das halt nicht :oops:

Grüße
Gast
 

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon DerHoepp » 03. Jan 2019, 13:44

Okay,

so langsam hab ich's verstanden. Der Fehler taucht nicht im Set-Statement auf, sondern erst beim Zugriff auf die .Body-Eigenschaft. Und dann auch nur, wenn du ein MailItem aus einer Vorlage öffnest. Dann versuch mal mit einer Existierenden Outlook-Instanz zu arbeiten, statt explizit eine neue mit New zu starten: Set OutApp = GetObject(,"Outlook.Application")
Alternativ/Ergänzend solltest explizit auf den MAPI-Namespace zugreifen (das erzwingt die Initialisierung des MAPI-Objekts). Dabei solltest du auch überlegen, ob du das zweite Argument der CreateItemFromTemplate-Eigenschaft mit nutzt. Bist du zusätzlich auch sicher, dass deine Vorlage ein MailItem ist und kein AppointmentItem? Also in etwa so:
Code: Alles auswählen
dim olNS as Object
Set objOutlook = GetObject(,"Outlook.Application") 'Alternative CreateObject() oder New
Set olNS = objOutlook.GetNameSpace("MAPI") 'EInmal auf Standard-Namespace zugreifen, damit der Namespace initialisiert ist.
  If Not objOutlook Is Nothing Then
    Set objOutlookItem = objOutlook.CreateItemFromTemplate(Dat.Path,olNS.GetDefaultFolder(16)) ' zusätzlichen Draft-Folder angeben.16-olFolderDrafts
    If Not objOutlookItem Is Nothing Then
'     objOutlookItem.display
      MsgBox objOutlookItem.body
      objOutlookItem.Close olDiscard
    End If
    Set objOutlookItem = Nothing

Testen kann ichs nicht, ich hab leider kein Outlook zur Verfügung.
Viel Erfolg!
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8820
Registriert: 14. Mai 2013, 11:08

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Gast » 03. Jan 2019, 14:34

DerHoepp hat geschrieben:so langsam hab ich's verstanden. Der Fehler taucht nicht im Set-Statement auf, sondern erst beim Zugriff auf die .Body-Eigenschaft. Und dann auch nur, wenn du ein MailItem aus einer Vorlage öffnest.



:arrow: Leider nein ....
Nicht nur, wenn ich ein Mailitem aus einer Vorlage öffne sondern auch wenn ich direkten Zugriff auf die Mail nehme.


Vielen Vielen Dank erst einmal für Deine Mühe. :D

Habe meinen Code gleich abgeändert nach Deinen Spezifikationen, doch leider ohne Erfolg. :(

Weder die alternative Methode mit CreateObject() oder New brachte einen Erfolg oder die Verwendung von
"objOutlook.Session.OpenSharedItem(Dat.Path)" ...

Jedesmal bricht er bei dem Zugriff auf die .Body Eigenschaft ab (.display funktioniert aber immer noch).

Die Vorlage ist auch ein reines Mailitem und in keinster Weise als Appointment verknüpft.

Im Überwachungsausdruck des "objOutlookItem" ist auch sonst alles vorhanden...
z.B.
.Attachments.count = 1
.ConversationTopic = Richtig
.Subject = Richtig
.DownloadState = olFullItem
.MessageClass = IPM.Note
.RecievedTime = vorhanden
.BodyFormat = olFormatHTML

Problem bei:
.SenderEmailAddress
.SenderName
.HTMLBody
.Body

Hier ist jeweils als Wert "<>" angegeben und genau bei dem Zugriff kommt der objektdefinierte Fehler.
Klar, bei nicht vorhandenen Werten kommt "".


Danke noch einmal.
Ich denke nicht, dass sich das Problem so einfach lösen lässt ohne dass hier einer am System sitzt.

Von daher ...
Danke noch einmal,

Matthias
Gast
 

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Snarfensia » 03. Jan 2019, 15:50

Das lustige ist, dass der Body der msg Datei beim einlesen als ANSI lesbar ist ...

Das ist aber von Hinten in die Brust oder sowas ...


Grmpf .. :roll:
Snarfensia
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 10. Dez 2018, 12:06

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon DerHoepp » 03. Jan 2019, 17:27

Moin nochmal,

dann hast du am Kern meiner Überlegungen vorbeiprogrammiert :) da war ich wohl nicht deutlich genug. Das Problem liegt ziemlich wahrscheinlich daran, dass es Probleme mit dem Login für den Namespace gibt. Dies kannst du am einfachsten Lösen, in dem du eine laufende Instanz von Outlook verwendest, statt eine neue zu initialisieren. Für eine eigene Instanz kannst du einen separaten LogIn nutzen (.LogOn-Methode soweit ich weiß), oder aber (wenn es ein Standard-Login gibt) einmalig im Code auf den Namespace zugreifen. Dann Loggt Outlook den Standarduser ein. Also:

0. Die CreateItemFromTemplate()-Methode des Application-Objektes verwenden.
1. zuerst: GetObject bei laufender Outlook-Instanz verwenden (sorgt dafür, dass der Namespace schon da ist, nicht CreateObject, nicht New), wenn es dann funktioniert, langsam vorantasten mit
2. Namespace initialisieren, indem du darauf zugreifst (laut der Seiten, die ich gefunden habe, reicht dafür die Zuweisung zu einer Variablen. Hilfsweise kannst du ja auch einfach eine Eigenschaft ins direktfenster schreiben

Ich hoffe es hilft, sonst wende dich am besten Vertrauensvoll ans Nachbarforum, ich bin nur Laie!

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

Re: "Workaround" für Outlook-Import (.saveas) gesucht

Beitragvon Snarfensia » 04. Jan 2019, 11:32

Hallo noch einmal "derHoepp" und nochmals Dank...

Ich bin das noch einmal durchgegangen, aber irgendwie ...

Ich habe noch eine andere Hilfe in einem Office-Support Forum gefunden, welche natürlich -NICHT- funktioniert,
habe aber jetzt die Frage im richtigem Forum gepostet ... :D
http://office-loesung.de/p/viewtopic.php?f=165&t=791990

Grüße
Snarf
Snarfensia
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 10. Dez 2018, 12:06


Zurück zu Excel Forum (provisorisch)

Wer ist online?

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

cron