Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1828to1832
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
vba Excel / geöffnet Outlook-Mail
12.05.2021 23:05:48
Timm
Hallo zusammen,
ich habe ein Makro erstellt mit dem ich beim Anklicken eines Hyperlinkes eine Outlook E-Mail versenden möchte. Nachfolgend ein Auszug aus dem Quellcode:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call E_mail_versenden
End Sub
Sub E_mail_versenden()
Dim myMsg As Outlook.MailItem
Set myMsg = ActiveInspector.CurrentItem-->hier springt der Debugger beim 2-ten Klick hin
....
....
Set myMsg = nothing
End Sub Beim ersten Klick auf den Hyperlink funktioniert alles wunderbar. Schließe ich die E-Mail jedoch und klicke erneut auf den Hyperlink , dann erhalte ich die nachfolgende Fehlermeldung
Laufzeitfehler '462
Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar.
Wird das Makro gestoppt und der Hyperlink erneut ausgewählt funktioniert es wieder einmal und danach erhalte ich wieder die Fehlermeldung.
Hat jemand eine Idee wo der Fehler steckt?
Gruß
Timm

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
13.05.2021 10:01:32
mumpel
Hallo!
Die Outlook-Session muss beendet sein bevor Du erneut darauf zugreifen kannst. Automatisch beendet sich die Session nur wenn das Makro komplett abgelaufen ist. Daher immer erst das Makro ablaufen lassen bevor es erneut ausgeführt wird. "Wird das Makro gestoppt" deutet darauf hin, dass das Makro irgendwo stoppt und nicht durchläuft.
Gruß, René
AW: vba Excel / geöffnet Outlook-Mail
13.05.2021 20:59:56
Timm
Hallo Rene,
beim 1.Durchlauf funktioniert, dass Makro tadellos. Beim 2.Durchlauf erhalte ich dann denn Laufzeitfehler. Klicke ich anschließend auf stopp. Läuft das Makro wieder einmal durch und dann bekomme ich wieder die Fehlermeldung.
Lasse ich eine Outlook Mail geöffnet. Funktioniert es auch tadellos.
Finde den Fehler einfach nicht.
Ist das Ansprechen der per Hyperlink geöffneten Outlook Mail denn korrekt?
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
14.05.2021 06:29:21
Oberschlumpf
Hi Rene,
du findest den Fehler - mit Datei - nicht, und wir bisher - ohne Datei - vielleicht auch nicht (auch wenn du bei der bisher einzigen Antwort deinen Text aus dem ersten Beitrag mehr oder weniger wiederholst, und eigtl so gar nicht auf die Antwort eingehst).
Wieso zeigst du auch uns nicht mal bitte per Upload eine Bsp-Datei inklusive allem, was erforderlich ist, um dein Problem vielleicht besser verstehen zu können?
Ciao
Thorsten
AW: vba Excel / geöffnet Outlook-Mail
18.05.2021 20:12:34
Timm
Hallo Chris,
hallo zusammen,
zunächst einmal möchte ich mich für die Hilfestellung von Chris und Oberschlumpf bedanken. Hab wieder einiges gelernt.
Habe mein Konzept nochmals überarbeitet und mich von den Checkboxen verabschiedet. So konnte ich mich auch vor dem Klassenmodul drücken :-). Werde mir diese Thematik jedoch in einer ruhigen Minute mal zu Gemüte führen.
Die Funktion Intersect habe ich noch nicht ganz verstanden. Sie liefert ja ein Schnittmenge z.B.
Intersect(A1:A3;A3:A6)...würde als Ergebnis A3 liefern als ein Range, soweit habe ich es verstanden.
Wie verhält es sich hier:
Private Sub Worksheet_Change(ByVal Target as Range)
Set Target = Intersect(Target, Range("A1:A3"))
Ist Target dann nothing, wenn ich z.B. A1="" eintrage? Target kann also nur not nothing oder nothing sein richtig?
Habe noch eine kurze weitere Frage, wenn ich Outlook aus Excel heraus anspreche und es in Outlook nur ein Konto gibt muss ich dann trotzdem
With myMsg
.SendUsingAccount = .Session.Accounts.Item("test1@gmx.de")
End With
verwenden oder lasse ich die Zeile dann einfach weg?
Gruß
Timm
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
14.05.2021 08:49:33
ChrisL
Hi
Ich denke auch, das Problem versteckt sich irgendwo, aber nicht im gezeigten Code. Als Trockenübung mit folgendem Code ist das Problem nicht festzustellen. Ich nehme an bei dir auch nicht.

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call E_mail_versenden
End Sub

Sub E_mail_versenden()
Dim myMsg As Outlook.MailItem
Set myMsg = ActiveInspector.CurrentItem
Set myMsg = Nothing
End Sub
Folgende Situation solltest du bedenken: Wenn das CurrentItem kein Mail ist, sondern z.B. ein Kalendereintrag, dann läufst du in einen Typenfehler, weil du die Variable als Mail deklarierst.
cu
Chris
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
14.05.2021 15:55:42
Timm
Hallo zusammen,
hier findet ihr die Testdatei:
https://www.herber.de/bbs/user/146182.xlsm
1. Makro...die Variante von Chris
2. Makro...meine Variante
3. Makro...meine Variante in Kombination mit der Variante von Chris
Habe den Fehler abgefangen, jedoch sind anschließend zwei E-mails offen. So bin ich vorgegangen:
Hyperlink anklicken...E-mail mit dem Inhalt erscheint...E-mail händisch geschlossen...Hyperlink erneut angeklickt...zwei E-mails werden geöffnet(in der ersten E-mail wird nur dem Hyperlink gefolgt und die E-mail Adresse als Empfänger eingetragen, die zweite E-mail stellt das gewünschte Ergebnis dar).
Des Weiteren ist mir aufgefallen, dass beim zweiten Durchlauf die Variable myinsp oder bei der variante von Chris myMsg nothing ist. Das kann doch nicht sein oder?
Gruß
Timm
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
14.05.2021 18:30:22
ChrisL
Hi Tim
1. Schon einmal über die Alternative nachgedacht, den Mailinhalt direkt über den Hyperlink zu definieren. Hat den grossen Vorteil, dass du unabhängig vom Mailprogramm agierst.
mailto:mailadresse@mail.com?subject=Titel&body=Text
2. CurrentItem einfach so (ohne zu speichern) zu schliessen, erachte ich als gefährlich. Vielleicht schreibt der Benutzer gerade eine lange Mail und klickt zwischendurch mal auf den Hyperlink. Du gehst davon aus, dass CurrentItem immer dein "Hyperlink-Mail" ist, aber ich vermute der Code ist teilweise schneller (somit noch kein Item zum Schliessen vorhanden) und du erhältst die zwei Mails wie beschrieben. Wäre blöd, wenn in dem Moment zufällig noch eine andere Mail aktiv wäre.
Aufgrund der erwähnten Vermutung (nachgeprüft habe ich es nicht), wäre mir bei Item.Close unwohl. Folgende Alternativvorschläge:
a) Du verlinkst zur Zelle in der der Link steht. Damit öffnet sich keine Mail und du kannst dir die Übung sparen. Als friendly name kannst du ja weiterhin die Mailadresse stehen lassen.
b) Verzichte auf den Hyperlink und verwende ein anderes Ereignis z.B. BeforeDoubleClick
cu
Chris
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
16.05.2021 17:54:18
Timm
Hallo Chris,
hallo zusammen,
habe nochmal über mein Konzept nachgedacht und möchte den E-Mail Versand nun mit einer active-X Checkbox starten. Meine Tabelle umfasst ca. 50 active-X Checkboxen und diese sollen beim Klick den E-Mail Versand starten.
Nachfolgend meine beiden Ansätze, die jedoch nicht zum gewünschten Ergebnis führen:
Die Active-X Checkboxenverknüpfungen befinden sich in Bereich "AB4:AB54"(WAHR und FALSCH)
1.

Private Sub Worksheet_change(ByVal Target As Range)
Set Target = Intersect(Target, Range("AB4:AB54"))
   'Nur dieser Bereich soll das "Change" Ereignis auslösen
If Target = WAHR Then
Funktioniert nicht, kann Target über WAHR und FALSCH verarbeiten?
MsgBox "Änderung erfolgt."
Else: Exit Sub
End If
End Sub
2.

Private Sub CheckBox1_Click()
MsgBox "Änderung erfolgt."
End Sub
Für eine CheckBox funktioniert die 2.Variante, wie muss ich jedoch vorgehen bei 50 Checkboxen?
Laut meiner Recherche soll mit einem Klassenmodul gearbeitet werden. Habe das Prinzip zwar verstanden, aber leider kein Beispiel für mein Vorhaben gefunden.
Bin sehr unerfahren was Change oder Click Ereignisse anbelangt und mit Klassenmodulen habe ich noch gar nicht gearbeitet. Seid also bitte nachsichtig mit mir.
Bin für jede Hilfestellung dankbar.
Gruß
Timm
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
17.05.2021 08:56:34
ChrisL
Hi Tim
Finde ich gut, dass du dein Vorhaben anpasst.
Intersect liefert die Schnittmenge von zwei Bereichen d.h. das Ergebnis entspricht einer Range oder Nothing. Dieses Ergebnis könnte man zwar in Boolean (True/False, beachte in VBA englisch) umwandeln, aber üblicherweise formuliert man deine Problemstellung wie folgt:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AB4:AB54")) Is Nothing Then
MsgBox "Hallo Welt"
End If
End Sub
Ich hätte auf ein BeforeDoubleClick Event tendiert:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("AB4:AB54")) Is Nothing Then
Cancel = True
MsgBox "Hallo Welt"
End If
End Sub
Ein Beispiel zum Klassenmodul habe ich hier mal erstellt:
https://www.herber.de/forum/archiv/1804to1808/1805899_eingebettete_Textbox.html
(Beachte meinen Vorbehalt, dass ich nicht mit einer hohen Anzahl an CheckBoxen hantieren würde, weil nervig in der Wartung, verschiebt sich womöglich ungewollt oder schiebt sich übereinander)
cu
Chris
Anzeige
AW: vba Excel / geöffnet Outlook-Mail
18.05.2021 20:14:32
Timm
Ich setze den Thread mal auf offen.
AW: vba Excel / geöffnet Outlook-Mail
18.05.2021 20:16:20
Timm
Hallo Chris,
hallo zusammen,
zunächst einmal möchte ich mich für die Hilfestellung von Chris und Oberschlumpf bedanken. Hab wieder einiges gelernt.
Habe mein Konzept nochmals überarbeitet und mich von den Checkboxen verabschiedet. So konnte ich mich auch vor dem Klassenmodul drücken :-). Werde mir diese Thematik jedoch in einer ruhigen Minute mal zu Gemüte führen.
Die Funktion Intersect habe ich noch nicht ganz verstanden. Sie liefert ja ein Schnittmenge z.B.
Intersect(A1:A3;A3:A6)...würde als Ergebnis A3 liefern als ein Range, soweit habe ich es verstanden.
Wie verhält es sich hier:
Private Sub Worksheet_Change(ByVal Target as Range)
Set Target = Intersect(Target, Range("A1:A3"))
Ist Target dann nothing, wenn ich z.B. A1="" eintrage? Target kann also nur not nothing oder nothing sein richtig?
Habe noch eine kurze weitere Frage, wenn ich Outlook aus Excel heraus anspreche und es in Outlook nur ein Konto gibt muss ich dann trotzdem
With myMsg
.SendUsingAccount = .Session.Accounts.Item("test1@gmx.de")
End With
verwenden oder lasse ich die Zeile dann einfach weg?
Gruß
Timm
Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige