Mein Ziel ist es, ein Excel-Blatt zu aktualisieren, wenn ich Mails mit einem bestimmten Thema bekomme (ich habe eine Regel eingerichtet, um relevante Mails in einen Ordner zu verschieben).
Ich habe einen ähnlichen Beitrag auf dieser Site gesehen, aber der angegebene Code ist nicht vollständig. Da es kein "Profi" oder "Technikfreak" ist, ist es sehr schwierig, Codes zu schreiben.
Mail enthält:
Dateiname: Besitzername: Datum des letzten Updates: Speicherort der Datei (dies wird der Laufwerkspfad sein):
Ich werde diese Mail täglich erhalten und muss diese Information in einem Excel-Blatt aktualisieren. (die ich bis zum Monatsende offen halten werde)
Bitte helfen Sie mir. Vielen Dank im Voraus
Einführung
In der ersten Version dieser Antwort habe ich Sie auf eine andere Frage hingewiesen, von der ich jetzt weiß, dass Sie sie nicht lesen können.
Der gesamte Code, den Sie benötigen, ist hier, aber das ist nicht als unmittelbare Lösung geschrieben. Dies ist ein Lernprogramm, das Sie in das Outlook-Objektmodell einführt und Daten aus der Outlook-Datenbank und in eine Excel-Arbeitsmappe extrahiert. Mach dir keine Sorgen, dass du nicht "ein Profi" oder "Technikfreak" bist. einmal waren wir alle Neulinge. Arbeite durch die Abschnitte. Mach dir keine Sorgen, wenn du alles nicht verstehst. Wählen Sie einfach die Teile aus, die Sie jetzt brauchen. Wenn Sie Ihre Lösung verbessern möchten, kommen Sie zurück zu diesem Tutorial und dem Code, den Sie auf Ihre Disc kopiert haben werden.
In den folgenden Abschnitten sollen AnswerA () und AnswerB () helfen, die Ordnerstruktur zu verstehen. AnswerC1 () ist auch eine kurzfristige Ausbildungshilfe. Allerdings sind AnswerC2 () und AnswerC3 () Unterroutinen, die Sie möglicherweise durchgängig benötigen. Wenn Sie sie behalten, schlage ich vor, Sie umzubenennen; zum Beispiel: FindFolder () und FindFolderSub ().
AnswerD () ist auch eine Trainingshilfe, die Sie jedoch beibehalten sollten. Hier erfahren Sie, wie Sie auf einige Eigenschaften von Postsendungen zugreifen, aber möglicherweise benötigen Sie Zugriff auf mehr Eigenschaften von Postsendungen, als ich gezeigt habe. Klicken Sie im VB Editor auf F2, um den Objekt-Explorer anzuzeigen. Scrollen Sie in der Liste der Klassen nach MailItem. Sie erhalten eine Liste mit über 100 Methoden und Eigenschaften. Einige sind offensichtlich, aber Sie müssen VB Hilfe verwenden, um den Zweck von vielen zu entdecken. Erweitern Sie AnswerD (), um Methoden oder Anzeigeeigenschaften zu verwenden, die Ihrer Meinung nach nützlich sein könnten.
AnswerE () ist eine Entwicklungshilfe, bietet aber auch die Struktur für Ihr Makro. Derzeit werden die Text- und HTML-Textstellen der Mail-Objekte in einem Ordner auf Disc ausgegeben. Sie wollen das im Moment nicht tun, aber Sie könnten. Ich archiviere alle meine E-Mails in Excel. Ich erstelle eine Zeile pro E-Mail mit Spalten für Absender, Empfänger, Betreff, Datum usw. Ich speichere den Textkörper, den HTML-Body und alle Anhänge auf der Disc und erstelle Hyperlinks zu ihnen. Ich habe E-Mails seit Jahren aus mehreren Outlook-Installationen zurück.
AnswerF1 () zeigt Ihnen, wie Sie eine neue Excel-Arbeitsmappe erstellen, und AnswerF2 () zeigt Ihnen, wie Sie eine vorhandene Excel-Arbeitsmappe öffnen. Ich nehme an, dass AnswerF2 () das ist, was Sie brauchen.
Es gibt hier eine Menge, aber wenn Sie es kontinuierlich durcharbeiten, werden Sie das Outlook-Objektmodell verstehen und lernen, wie Sie Ihr Ziel erreichen.
Gesundheitswarnung
Alles in dieser Antwort wurde durch Experimente entdeckt. Ich habe mit VB Help begonnen, mit F2 auf das Objektmodell zugegriffen und experimentiert, bis ich herausgefunden habe, was funktioniert. Ich habe mir ein sehr empfehlenswertes Nachschlagewerk gekauft, aber es enthielt nichts Wichtiges, das ich nicht entdeckt und vieles weggelassen hätte, was ich entdeckt hatte.
Ich vermute, dass ein Schlüsselmerkmal meines Wissens ist, dass es auf vielen verschiedenen Installationen basiert. Einige der aufgetretenen Probleme sind möglicherweise auf Installationsfehler zurückzuführen, die erklären könnten, warum die Autoren der Referenzbücher von ihnen nicht wussten.
Der folgende Code wurde mit Excel 2003 und Outlook Exchange 2003 und 2007 getestet.
Erste Schritte, wenn Sie mit Outlook VBA nicht vertraut sind
Öffnen Sie "Outlook" oder "Outlook Exchange". Diese Makros funktionieren nicht mit "Outlook Express".
Wählen Sie in der Symbolleiste Extras, Makro, Sicherheit. Ändern Sie die Sicherheitsstufe auf "Mittel", wenn sie nicht bereits auf dieser Ebene ist. Dies bedeutet, dass Makros nur mit Ihrer ausdrücklichen Genehmigung ausgeführt werden können.
Um den Outlook VB Editor entweder zu starten:
1) Wählen Sie in der Symbolleiste Extras, Makro, Makros oder klicken Sie auf Alt + F11 2) Wählen Sie Makros aktivieren.
Wählen Sie in der Werkzeugleiste Einfügen, Modul.
Sie können ein, zwei oder drei Fenster sehen. Auf der linken Seite sollte der Projekt Explorer sein. Sie brauchen es heute nicht, aber wenn es fehlt, klicken Sie auf Strg + R, um es anzuzeigen. Rechts oben ist der Bereich, in den Sie den Code einfügen. Unten sehen Sie das Direktfenster. Wenn das Direktfenster fehlt, klicken Sie auf Strg + G, um es anzuzeigen. Die darunter liegenden Makros verwenden das Direktfenster für die Ausgabe, so dass Sie es sehen können.
Der Cursor befindet sich im Codebereich.
Eingabe: Option Explicit.
Dies weist den VB-Editor an, zu überprüfen, ob alle Variablen definiert sind. Der unten stehende Code wurde getestet, aber dies vermeidet eine Art von Fehler in irgendeinem Code, den Sie eingeben können.
Kopieren Sie die Makros nacheinander und fügen Sie sie in den Codebereich ein.
Makros AnswerC (), AnswerD (), Answer (E), AnswerF1 () und AnswerF2 () müssen vor dem Ausführen etwas modifiziert werden. Anweisungen innerhalb des Makros.
Um ein Makro auszuführen, platzieren Sie den Cursor darin und drücken Sie F5.
Zugriff auf die beiden obersten Ordnerebenen
Die oberste Ebene der Ordner ist vom Typ Ordner. Alle Unterordner sind vom Typ MAPIFolder.Ich habe nie versucht, auf die oberste Ebene zuzugreifen, außer um zu den Unterordnern zu gelangen.
AnswerA () erhält Zugriff auf die Outlook Exchange-Datenbank und gibt die Namen der Ordner der obersten Ebene an das Direktfenster aus.
%Vor%AnswerB () gibt die Namen der Ordner der obersten Ebene und ihrer unmittelbaren Kinder aus.
%Vor%Das Problem mit AnswerB () ist, dass die Kinder Kinder haben können, die Kinder in jeder Tiefe haben können. Sie müssen einen bestimmten Ordner unabhängig von der Tiefe finden können.
Suchen Sie einen benannten Ordner
Wenn Sie einen Standardordner wie "Posteingang" oder "Gesendete Objekte" durchsuchen möchten, benötigen Sie diesen Code nicht. Wenn Sie die Nachrichten, die Tabellen enthalten, in einen anderen Ordner kopieren, benötigen Sie diesen Code. Selbst wenn Sie entscheiden, dass Sie diesen Code jetzt nicht brauchen, schlage ich vor, dass Sie ihn behalten, falls Sie ihn in Zukunft brauchen.
Der folgende Code verwendet zwei Unterroutinen. Der Aufrufer erstellt einen Ordnernamen wie "Persönliche Ordner | MailBox | Posteingang". Die Subroutinen arbeiten die Hierarchie herunter und geben den erforderlichen Ordner als Objekt zurück, wenn er gefunden wird.
Hinweis: Der Sonderfall, einen Standardordner wie "Posteingang" oder "Gesendete Objekte" zu finden, wird später besprochen.
%Vor%Untersuchen eines Zielordners
AnswerC2 () und AnswerC3 () bieten den Code zum Suchen eines Zielordners. Ordner enthalten Elemente: Postsendungen, Besprechungsanfragen, Kontakte, Kalendereinträge und mehr. Nur Postsendungen werden mit diesem Code geprüft. Der Zugriff auf Besprechungsanfragen ist im Wesentlichen gleich, aber sie haben unterschiedliche Eigenschaften.
AnswerD () gibt eine Auswahl der Eigenschaften eines Poststücks aus.
Sobald Sie AnswerD () für eine Auswahl von Ordnern ausprobiert haben, drücken Sie F2, oder wählen Sie in der Symbolleiste Ansicht, Objektbrowser. Scrollen Sie in der Liste der Elemente nach unten, bis Sie MailItem erreichen. Der Mitgliederbereich zeigt alle seine Eigenschaften und Methoden an, von denen es mehr als 100 gibt. Einige sind ziemlich offensichtlich; Die meisten müssen Sie in VB Help nachschlagen. Ändern Sie diese Routine, um weitere Eigenschaften und Methoden und möglicherweise andere Arten von Elementen zu untersuchen.
Warnung. Dieser Code wurde entwickelt, um einen benannten Ordner nach Postsendungen zu durchsuchen. Wenn Sie den Code ändern, um die gesamte Ordnerhierarchie zu untersuchen, treten möglicherweise Probleme auf. Es könnte mein Fehler gewesen sein oder es hätte Fehler in der Installation sein können, aber ich habe festgestellt, dass mein Code abstürzt, wenn ich versuche, auf bestimmte Ordner wie "RSS-Feeds" zuzugreifen. Ich war nie genug daran interessiert, diese Abstürze zu untersuchen und habe meine Baumsuche einfach so geändert, dass Zweige mit ausgewählten Namen ignoriert werden.
Wenn Sie dieses Makro ausführen, erhalten Sie eine Warnung: "Ein Programm versucht, auf E-Mail-Adressen zuzugreifen, die Sie in Outlook gespeichert haben. Möchten Sie dies zulassen?" Markieren Sie "Zugriff erlauben für", wählen Sie ein Intervall und klicken Sie auf Ja.
%Vor%Speichern von Objekten auf einer Disc
AnswerE () sucht nach einem Ordner Ihrer Wahl und speichert eine Kopie der text- und html-Textstellen jeder darin enthaltenen Mail. Ich schlage vor, Sie kopieren eine Auswahl von Nachrichten, die Tabelle enthalten, in einen neuen Ordner und führen AnswerE () aus. Dies ist nicht direkt relevant für Ihre Fragen, aber ich glaube, es wird das Verständnis unterstützen.
Wenn Sie dieses Makro ausführen, erhalten Sie eine Warnung: "Ein Programm versucht, auf E-Mail-Adressen zuzugreifen, die Sie in Outlook gespeichert haben. Möchten Sie dies zulassen?" Markieren Sie "Zugriff erlauben für", wählen Sie ein Intervall und klicken Sie auf Ja.
%Vor%Erstellen oder Aktualisieren einer Excel-Arbeitsmappe
Sie sagen nicht, ob Sie eine neue Excel-Arbeitsmappe erstellen oder eine vorhandene aktualisieren möchten. AnswerF1 () erstellt eine Arbeitsmappe. AnswerF2 () öffnet eine vorhandene Arbeitsmappe.
Bevor Sie eines dieser Makros ausprobieren, müssen Sie:
.
%Vor%Schreiben in die Excel-Arbeitsmappe
Dieser Code sucht die nächste freie Zeile in Ihrer Arbeitsmappe und schreibt in sie. Ich erkläre, warum Konstanten nützlich sind und warne dich davor, deinen Outlook- und Excel-Code auseinander zu halten.
%Vor%Zusammenfassung
Ich hoffe, ich habe einen angemessenen Detaillierungsgrad geboten. Bitte antworten Sie mit einem Kommentar in beide Richtungen.
Springen Sie nicht zu den endgültigen Makros. Wenn etwas schief geht, wirst du die Ursache nicht verstehen. Nehmen Sie sich Zeit, um mit jeder der früheren Antworten zu spielen. Ändere sie, um etwas anderes zu tun.
Viel Glück. Sie werden erstaunt sein, wie schnell Sie sich mit Outlook und VBA vertraut machen werden.