Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hyperlink Makro Email senden
#1
Hallo liebe Gemeinde.

Ich nutze in OpenOffice folgende Formel:
Code:
=WENN(ODER($K7="";$F7>=HEUTE());"";HYPERLINK("mailto:"&$K7&"?subject="&$B7&"&body="&"Sehr geehrte"&WENN(($I7="")+($J7="");" Damen und Herren";WENN($I7="Herr";"r Herr "&$J7;" Frau "&$J7))&",%0d%0a%0d%0amir ist aufgefallen, dass die Wartung/Prüfung  """&$B7&""" seit "&TEXT($F7;"TT.MM.JJJJ")&" überfällig ist.%0d%0aIch bitte Sie, diese umgehend nachzuholen!%0d%0a%0d%0a";"Email senden"))

Diese funzt auch in OO!

In Excel funzt diese nur bedingt, da die Funktion mailto nur insgesamt 246 Zeichen zulässt.

ich habe folgende Tabelle:

B = Was
I = Anrede
J = Name
K = Email

B                                   I           J               K
Rauchmelder prüfen     Herr      Tester        info@tester.de
usw.

getestet habe ich:
Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Name = "Email_senden" Then mail
End Sub
Dieses funzt nur wenn ich über Hyperlink erstellen gehe. mit manuellem Code wie
Code:
=HYPERLINK("#Prüfungen!"&"$N"&ZEILE();"Email_senden")
funzt es nicht.

Wie bekomme ich es dynamisch hin?

Vielen Dank für eure Teilhabe!
Antworten Top
#2
Mal zur Ergänzung!

Aufruf in TB:
Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If Target.Name = "Email_senden" Then mail
End Sub

Hier bräuchte ich einen Hyperlink, der auch den Target.Name definiert!
Hyperlink über "Hyperlink einfügen" funzt, aber eben nicht als Code wie 

=HYPERLINK("#Prüfungen!"&"$N"&ZEILE();"Email_senden")

Der Code steht in Spalte N und bezieht sich auf die selbe Zelle! (ohne Funktion)

Modul:
Code:
Sub mail()

Dim strEmailadresse As String
Dim strCc As String
Dim strBcc As String
Dim strSubject As String
Dim strBody As String

strEmailadresse = Range("K" & ActiveCell.Row).Value
strCc = Range("M4").Value
strBcc = ""
strSubject = Range("B" & ActiveCell.Row).Value

If Range("I" & ActiveCell.Row).Value = "" Or Range("J" & ActiveCell.Row).Value = "" Then
strBody = "Sehr geehrten Damen und Herren,%0d%0a%0d%0amir ist aufgefallen, dass die Wartung/Prüfung  """ & Range("B" & ActiveCell.Row) & """ seit " & Range("F" & ActiveCell.Row) & " überfällig ist.%0d%0a%0d%0aIch bitte Sie, diese umgehend nachzuholen!%0d%0a%0d%0a"
Else
If Range("I" & ActiveCell.Row).Value <> "" And Range("J" & ActiveCell.Row).Value <> "" Then

If Range("I" & ActiveCell.Row).Value = "Herr" Then
strBody = "Sehr geehrter Herr " & Range("J" & ActiveCell.Row) & ",%0d%0a%0d%0amir ist aufgefallen, dass die Wartung/Prüfung  """ & Range("B" & ActiveCell.Row) & """ seit " & Range("F" & ActiveCell.Row) & " überfällig ist.%0d%0a%0d%0aIch bitte Sie, diese umgehend nachzuholen!%0d%0a%0d%0a"
Else
strBody = "Sehr geehrte Frau " & Range("J" & ActiveCell.Row) & ",%0d%0a%0d%0amir ist aufgefallen, dass die Wartung/Prüfung  """ & Range("B" & ActiveCell.Row) & """ seit " & Range("F" & ActiveCell.Row) & " überfällig ist.%0d%0a%0d%0aIch bitte Sie, diese umgehend nachzuholen!%0d%0a%0d%0a"
End If

End If

End If


ActiveWorkbook.FollowHyperlink Address:="mailto:" & strEmailadresse & _
                            "?subject=" & strSubject & _
                            "&cc=" & strCc & _
                            "&bcc=" & strBcc & _
                            "&body=" & strBody

End Sub
Antworten Top
#3
Hi,

bevor du weiter suchst: Worksheet_FollowHyperlink wird durch die HYPERLINK()-Funktion gar nicht ausgelöst. Du solltest dir also eine andere Möglichkeit suchen. Also entweder deinen Text kürzen, oder doch über einen erstellen Hyperlink gehen.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#4
Nur wie bekomme ich dann den Emaillink in eine Formel (Bedingung)?

=WENN(ODER($K7<>"";$F7<=HEUTE());"Email senden(Link)";"")
Antworten Top
#5
Update

Ich habe es jetzt wie folgt gelöst:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column = 14 And Target.Value = "Email senden" Then
Call mail
End If

End Sub

Dass einzige, was mich daran stört ist, wenn ich irgendwo auf dem Tabellenblatt Zellen markiere, ein
Laufzeitfehler 13 (Typen unverträglich) entsteht.

Gibt es eine Möglichkeit dass zu verhindern?

Danke
Antworten Top
#6
Hi,

Das Problem dürfte sein, dass bei der Auswahl mehrerer Zellen der Vergleich „Target.Value = xxx“ nicht geht, da es dann kein einzelner Wert ist. Um das zu umgehen solltest du entweder prüfen, ob nur eine Zelle ausgewählt wurde, oder die Zellen einzeln abklappern.

Aber willst du wirklich auf jede Auswahl reagieren? Viele Leute benutzen die Tastatur und gehen mit den Cursortasten zur nächsten Zelle. dabei werden meist einige Zellen zwischendrin notgedrungen kurz selektiert. Damit würdest du jedesmal eine Mail senden. Willst du das wirklich? Wäre es nicht besser hier den Doppel- oder den Rechtsklick zu verwenden?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#7
Habe es jetzt wie folgt gelöst:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.CountLarge > 1 Then
Exit Sub
End If

If Target.Column <> 14 Then
Exit Sub
Else
If Target.Column = 14 And Target.Value = "Email senden" Then
Call mail
End If

End If

End Sub
Antworten Top
#8
Könnte auch so:


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column  & Target = "14Email senden" Then mail
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Hi,

dann sollte man aber in Spalte A nirgends "4Email senden" setzen haben. Big Grin

Ich bin immer noch für den Doppelklick. Da dann auch nur eine Zelle betroffen ist, muss man nicht mehr darauf prüfen...

Code:
Private Sub Worksheet_BeforeDoubleclick(ByVal Target As Range, Cancel as Boolean)
If Target.Column = 14 and Target.Value = "Email senden" Then
    Mail
    Cancel = True
End If
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#10
Email senden wird nur in spalte 14 per Formel erzeugt!
Also alles gut!
Trotzdem vielen Dank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste