# E-Mail aus Excel



## Outsider77 (29. Juni 2012)

Hallo zusammen,
in der Firma, in der ich arbeite, benutzen wir für das Sammeln von Daten eine Excel-Datei, die sich auf einem Netzlaufwerk befindet.
Bei Einträgen in bestimmten Zellen wird automatisch eine E-Mail über Outloook versendet.
Auf den XP-Rechnern klappt das auch ohne Probleme.
Auf den Windows7-Rechnern (64 Bit) wird bei geschlossenem Outlook die E-Mail in den Postausgang abgelegt, aber (noch) nicht verschickt.
Erst beim manuellen Öffnen von Outlook wird diese Mail dann verschickt.

Hier mal der Code:

```
Sub mail()
Dim outlapp As Object

Set outlapp = CreateObject("Outlook.Application")

With olApp.CreateItem(0)
    'Empfänger
    .To = "Empfänger"
    .cc = "*Kopie"
    .bcc = "Blindkopie"
    .SentOnBehalfOfName = "Im Auftrag von..."
    'Betreff
    .Subject = "Betreff"
    'Nachricht
    '.Body = Textzeilen
    .htmlbody = "Text"
    'Lesebestätigung aus
    .ReadReceiptRequested = False
    'Dateianhang
    '.Attachments.Add "c:\Dok1.doc"
    .Send
End With

Set olApp = Nothing
End Sub
```

Kann mir bitte jemand erklären, wo der Fehler liegt?
Muß ich die Instanz für die 64-Bit-Variante von Outlook anders ansprechen?

Vielen Dank schon mal!

Gruß Outi


----------



## Zvoni (29. Juni 2012)

Und du bist dir sicher, dass auf den XP-Rechnern bei geschlossenem Outlook die E-Mail sofort verschickt wird? Weil ich wüsste nicht wie das gehen sollte.....


----------



## vfl_freak (29. Juni 2012)

Moin,

dito ... läuft dort vlt. irgendein Dienst in Hintergrund ?

Gruß
Klaus


----------



## Outsider77 (29. Juni 2012)

Hallo,

ihr habt recht. Ist mir bis dato gar nicht aufgefallen,
weil die beim Öffnen von Outlook sehr schnell verschwindet.
Ok, dann sorry für die eigentlich unnütze Frage!

Gibt es denn eine andere Möglichkeit, die Mail ohne extra Öffnen von Outlook zu senden?
Bzw. könnte ich Outlook automatisch starten lassen (dann würde die Mail je verschickt) und
dann Outlook wieder schließen lassen? Frage ist, wie schließt man ein Programm, welches man
mittels shell gestartet hat?


----------



## Zvoni (30. Juni 2012)

Du musst dir per GetProccessID die Proccess-ID holen und dann mit TerminateProcess das abschiessen


----------



## Zvoni (18. Juli 2013)

Korrektur zu meinem post: der rückgabe-wert der shell-funktion IST die process-id, also braucht man keinen API-call um die PID herauszufinden.


----------

