Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Exel Makro legt Outlook-Anwendung in die Taskleiste





Frage

Hallo, ich brauche Eure Hilfe, da beim ausführen des Makros die Outlook-Anwendeung immer wieder nur in der Taskleite abgelegt wird. Wie kann ich sicherstellen, daß die Outlook-Anwendung noch aktiv ist beim einfügen? Ich hoffe Ihr habt eine Idee die mir weiterhilft. Gruß Kerstin Dim ol, Mail As Object Set ol = CreateObject("Outlook.Application") Set Mail = ol.CreateItem(0) Mail.Subject = " Muster " & Now Mail.To = "Muster.@de" Mail.cc = "" Mail.bcc = "" Mail.body = Chr(13) Mail.Display Application.Wait (Now + TimeValue("0:00:02")) Application.SendKeys "{TAB}", Wait = True Application.SendKeys ("^v") , Wait = True Application.SendKeys ("%s") ,Wait = True Application.Wait (Now + TimeValue("0:00:02")) Workbooks.Open FileName:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls"

Antwort 1 von Event

Hallo Kerstin ;-)
Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now
Mail.To = "Muster.@de"
Mail.cc = ""
Mail.bcc = ""
Mail.body = Chr(13)
Mail.Display
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "{TAB}", True
Application.SendKeys "^v", True
Application.SendKeys ("%s"), True
Application.Wait (Now + TimeValue("0:00:02"))
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls

Syntax
Gruß

Antwort 2 von jami

Hallo,
ich werde das Kommazeichen bei True ändern, aber "Syntax" kann ich nicht einordnen.

Gruß
Kerstin

Antwort 3 von coros

Hi Kerstin,

darf ich mal ganz Dumm fragen, was Du mit Deinem Code eigentlich erreichen möchtest. Denn mir wird das nicht ganz klar. Erst recht nicht, was Du mit diesen vielen SendKeys-Anweisungen bezwecken möchtest. Erklär das doch mal, eventuell gibt es dort auch einen anderen Lösungsweg. Ein paar Lösungen zum Versenden von Mails aus Excel kannst Du Dir gerne mal auf meiner HP in der Rubrik Beispieldateienund dort dann in dem Beispiel 27 ansehen. Dort stelle ich dazu eine Beispieldatei zur Verfügung, die Dir eventuell helfen wird.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von jami

Hallo Coros,
mit den SendKeys-Anweisungen füge ich aus einer Tabelle einen bestimmten Bereich in Outlook ein, anschließend wird das E-Mail auch gleich versandt und eine neue Tabelle geöffnet.

Gruß
Kerstin

Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "{TAB}", True ´ Absatz
Application.SendKeys "^v", True ´Einfügen
Application.SendKeys ("%s"), True ´Senden
Application.Wait (Now + TimeValue("0:00:02"))
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls

Antwort 5 von Event

Hallo Kerstin ;-) alias Jami alias fedko

Klappt es denn jetzt?

Gruß

Antwort 6 von coros

Hi Kerstin,

trotzdem verstehe ich das nicht, weil diese Anweisungen nicht benötigt werden. Nachfolgend mal ein Makro, was das gleiche macht, wie das was Du hier gepostet hast, allerdings ohne die SenKeys-Anweisungen.

Sub Send()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, _
Anwendung As DataObject, Nachricht, Mailtext As String
Set Anwendung = New DataObject
Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)

Mailtext = Sheets("E-Mailtext").Range("B1") & Chr(13) & Sheets("E-Mailtext").Range("B2")

With Nachricht
    .Subject = " Muster " & Now
    .To = "Muster.@de"
    .CC = ""
    .BCC = ""
    .Body = Mailtext
    .Display
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls "
End Sub


Der Text, der in die Mail übertragen wird, wird in der Zeile

Mailtext = Sheets("E-Mailtext").Range("B1") & Chr(13) & Sheets("E-Mailtext").Range("B2")

festgelegt. In diesem Beispiel sind es im Moment die Wert aus Tabellenblatt "Tabelle1" aus den Zellen B1 und B2. Wenn Du noch mehr haben möchtest, hänge in der oben genannten Zeile einfach

& Chr(13) & Sheets("E-Mailtext").Range("B3")

an und ändere die Zellbezeichnung B3 für die Zelle, deren Wert Du kopieren möchtest.

Ich hoffe, Du kommst klar. Bei Fragen oder Problemen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 7 von jami

Hallo coros,
der Zellenbezug sollte zwischen A3:P30 sein aus einer bestimmten geöffneten Tabelle (Pfadangabe).

Ich hoffe Du kannst mir noch mal weiterhelfen.

Danke noch mal für deine Hilfe.

Gruß
Kerstin

Antwort 8 von coros

Hi Kerstin,

nachfolgendes Makro kopiert Dir die Werte aus dem Bereich A3:P30 in eine neu generierte Mail. Kopiere das Makro wieder in ein StandardModul.

Sub Send()
Dim Outlook_Anwendung As Object, Mail As Object, Wiederholungen, _
Anwendung As DataObject, Nachricht, Mailtext As Range
Set Anwendung = New DataObject
Set Outlook_Anwendung = CreateObject("Outlook.Application")
Set Nachricht = Outlook_Anwendung.CreateItem(0)
Range("A3:P30").Copy
With Nachricht
.Subject = " Muster " & Now
.To = "Muster.@de"
.CC = ""
.BCC = ""
Anwendung.GetFromClipboard
.Body = Anwendung.GetText(1)
.Display
End With
Set Outlook_Anwendung = Nothing
Set Nachricht = Nothing
Workbooks.Open Filename:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls "
End Sub


Soll ein anderer Bereich kopiert werden, ändere in dem Makro in der Zeile

Range("A3:P30").Copy

den Bereich.

Ich hoffe, das ist so in etwa, wie Du es Dir vorgestellt hast. Wenn nicht, dann melde Dich wieder.


MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 9 von jami

Hallo Coros,
ich hätte da doch noch eine Frage,
ist es möglich das Makro auch mit Outlook-Express zu starten?

MFG
Kerstin

Antwort 10 von jami

Hi Coros,
ich habe das Makro in ein StandardModul eingefügt.
Es werden zwei Fehler angezeigt!

", _Anwendung As DataObject" Benutzerdefinierter Typ nicht definiert.

"Set Anwendung = New DataObject" wird in roter Schrift angezeigt.

Gruß
Kerstin

Antwort 11 von coros

Hi Kerstin,

das liegt an einem nicht aktivierten verweis. Gehe noch mal mit der Tastenkombination Alt F11 in die VBA Umgebung. Gehe dort in der Menüleiste auf Extras => Verweise und suche in dem Menü den Eintrag "Microsoft Outlook xx.x Objekt Library". Anstelle der xx.x steht bei Dir je nach Version 9.0, 10.0 oder 11.0. Aktiviere den Eintrag und speichere Deine Datei ab. Danach sollte der Fehler nicht mehr auftreten

Zu Deiner Frage aus Antwort 9, nein, mit Outlook Express ist das nicht möglich. Mit Outlook Express kann nur eine Mail versandt werden, die eine Exceldatei als Anhang hat. Das ist so, da Outlook Express kein VBA kennt und somit kann auf Outlook Express nicht zugegriffen werden wie auf Outlook. Wenn Dir die Variante mit dem Anhang reichen sollte, so schau Dir, wie schon in Antwort 3 von mir erwähnt, mal das Beispiel an. Dor ist eine der Varianten das versenden einer Mail mit Outlook Express.

Ich hoffe, meine Antwort hat Dir geholfen. Bei Fragen, weißt Du ja wo Du eine Antwort erhältst. ;-)

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 12 von jami

Hi Event,
ich melde mich erst so spät, da ich das geänderte Makro nur in der Arbeit testen konnte, Zuhause habe ich nur Outlook-Express.
Das Problem besteht immer noch, das die Outlook-Anwendung immer wieder nur in der Taskleite abgelegt wird.

Gruß
Kerstin

Antwort 13 von coros

Hi Kerstin,

wen meinst Du denn jetzt @event oder meinst Du mich. Was ich nciht verstehe, was Du mit

Zitat:
immer wieder nur in der Taskleite abgelegt wird.


meinst. Hast Du mein obiges Makro getestet? Funktioniert es nicht? Wenn es nicht funktioniert, was funktioniert damit nicht?


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: