Wie kann man eine Exceldatei in einem eMail-Anhang mit Excel öffnen?

Liebe/-r wer-weiss-was Experte/-in,

Ich habe folgendes Problem!

Ich bekomme mehrmals täglich eine e-Mail mit einem Excel-Anhang, den ich gerne aus einer anderen Excelanwendung heraus öffnen würde, damit ich die für mich relevanten Daten automatisch in dieses Excelprogramm übernehmen kann. CopyPast ist auf die Dauer einfach zu umständlich! Und natürlich soll das ganze aus Excel heraus laufen.

Soweit bin ich gekommen :

Sub Mails_Auslesen()
Dim objOutlook As Object
Dim objnSpace As Object
Dim objFolder As Object
Dim a As Long

Set objOutlook = CreateObject(„Outlook.Application“)
Set objnSpace = objOutlook.GetNamespace(„MAPI“)
Set objFolder = objnSpace.folders(2).folders(„Inbox“)

With objFolder
For a = 1 To .Items.Count
If .Items(a).Attachments.Count > 0 Then
If .Items(a).Attachments.Item(1) = „SUED.xls“ Then
MsgBox („Aktuelle Mail gefunden!“)
Exit For
End If
End If
Next a
End With

Set objnSpace = Nothing
Set objFolder = Nothing
Set objOutlook = Nothing
End Sub

Aber jetzt komme ich selbst mit googlen nicht mehr weiter.

vielen Dank im voraus
misha

Hallo misha!

Ich habe dein Vorhaben noch nicht so ganz verstanden. Aber wenn ich im Anhang eine Excel-Datei habe, klicke ich mit der rechten Maustaste darauf und kann diese gleich über das kleine Auswahl-Hilfsfenster mit Excel öffnen.

Vielleicht kannst du mir dein Vorhaben an einem Beispiel erklären.

Gruß Ersin

Lieber Misha,

da bin ich etwas überfragt. Ich würde die Anlage unter einem festen Pfad/Namen speichern und dann von Deiner Anwendung aus auf diese zugreifen, aber wahrscheinlich ist Dir das noch zu umständlich. Ob man überhaupt auf eine nicht gespeicherte Anlage zugreifen kann hängt wohl auch vom Mailsystem ab, wie gesagt, da überfragt.

Viel Erfolg

Rainer

Mein Vorhaben ist ganz einfach!
Wie schon erwähnt, bekomme ich mehrmals täglich eine eMail per Outlook. In dieser eMail ist eine Excel-Datei die ein Auszug einer Datenbank enthält. Diese Liste enthält ca. 100-500 Zeilen mit Informationen für die verschiedenen Standorte. Derzeit gehe ich hin und öffne diese Datei, erstelle dann einen Autofilter und kopiere dann per copy/past die für mich bestimmten Informationen in eine andere Excelliste mit der ich dann weiterarbeite.
Ich suche nun eine Möglichkeit, mit der ich diese Informationen aus dem eMail anhang herauslesen kann ohne jedesmal erst in Outlook die eMail öffnen und das ganze Prozedere durchzuführen zu müssen.
Das Script das ich beigelegt habe macht das eigentlich schon. Es geht hin durchsucht meinen Posteingang und identifiziert die entsprechende eMail. Aber nun weiß ich nicht wie man eine Excel Anwendung in einem eMail Anhang durch Excel selbst öffnen lässt. Da es sich in diesem Fall ja nicht um ein Laufwerk handelt, sondern um den Posteingangsordner und dann noch eine eMail, bekomme ich das mit "Workbooks.Open Filename:=„Path“ nicht hin!!?
Die Idee das ganze über ein Outlookmakro zu machen, die diesen Anhang in einen bestimmten Ordner auf dem Laufwerk ablegt, hatte ich auch schon. Aber ich habe sie verworfen, weil es aus anderen Gründen eher Problematisch wäre.
Daher suche ich eine Lösung für ein „autarkes“ Excel VBA Skript!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

//++++++++++++++++++++++++++++++++++++++++++++++++++++
Hallo misha!

Jetzt habe ich dich verstanden. Vielleicht hilft dir dieses Makro weiter: Es öffnet alle Anhänge einer E-Mail.

Sub AnhaengeOeffnen()

Dim myS As Object
Dim myIt As Outlook.MailItem
Dim myAt As Outlook.Attachments
Dim i As Long
Dim att As String

On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case „Explorer“
Set myIt = ActiveExplorer.Selection.Item(1)
Case „Inspector“
Set myIt = ActiveInspector.CurrentItem
Case Else
End Select
On Error GoTo 0

If myIt Is Nothing Then
GoTo ExitProc
End If

Set myAt = MyIt.Attachments
’ Windows Script Host Object
Set myS = CreateObject(„WScript.Shell“)

If myAt.Count > 0 Then
For i = 1 To myAt.Count
att = myAt.Item(i).DisplayName
On Error Resume Next
Kill „C:“ & att
On Error GoTo 0

myAt.Item(i).SaveAsFile „C:“ & att
myS.Run „C:“ & att
Next i
End If

ExitProc:
Set myAt = Nothing
Set myIt = Nothing
Set myS = Nothing
End Sub

Gruß Ersin.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ersin

vielen Dank für deine Hilfe! Es ist zwar immer noch nicht das was ich eigentlich wollte, aber damit es geht, habe ich mich dazu entschieden den Anhang wenigstens Temporär zwischen zu speichern und dann halt wieder zu löschen.
Ursprünglich wollte ich genau das vermeiden! Trust Domain!!! Ich wollte den Anhang direkt aus der eMail heraus öffnen. Aber wenn es halt nicht anders geht….!!!

PS: Kann es sein dass dieses Makro eigentlich für Outlook ist. Als ich es getestet habe bekamm ich einige seltsame Fehlermeldungen! Macht aber nix, ich hab es auch unter Excel zum laufen gebracht!

Gruß und vielen Dank
misha

Hallo misha!

Schön das Du eine Lösung gefunden hast. So wie ich Dich verstanden habe, wolltest Du doch ein Makro das aus Outlook die Anhänge der E-Mails ausliest und öffnet. Und genaus das sollte dieses Makro auch machen.

Nun gut. Da habe ich dich wohl missverstanden.

Gruß Ersin.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Grüezi Misha

Ich bekomme mehrmals täglich eine e-Mail mit einem
Excel-Anhang, den ich gerne aus einer anderen Excelanwendung
heraus öffnen würde, damit ich die für mich relevanten Daten
automatisch in dieses Excelprogramm übernehmen kann. CopyPast
ist auf die Dauer einfach zu umständlich! Und natürlich soll
das ganze aus Excel heraus laufen.

Da das Ganze aber eigentlich Outlool betrifft kann ich als Excel-Experte leider nicht viel dazu beitragen.

Wenn Du lauffähigen Code hast, der Outlook entsprechend ‚bedient‘, kann ich allenfalls beim Implementiern in Excel mithelfen.
Für mehr reichen meine Kentnisse in Outlook leider nicht aus.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -