Clever-Excel-Forum

Normale Version: Hyperlink Makro Email senden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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!
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
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.
Nur wie bekomme ich dann den Emaillink in eine Formel (Bedingung)?

=WENN(ODER($K7<>"";$F7<=HEUTE());"Email senden(Link)";"")
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
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?
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
Könnte auch so:


Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column  & Target = "14Email senden" Then mail
End Sub
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
Email senden wird nur in spalte 14 per Formel erzeugt!
Also alles gut!
Trotzdem vielen Dank
Seiten: 1 2