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 ;-)
Syntax
Gruß
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
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.
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
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ß
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.
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.
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
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.
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.
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
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
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.
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
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
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.
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.
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.