Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1604to1608
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
Emailadresse auf Vollständigkeit prüfen
23.01.2018 19:35:15
Gregy
Hallo liebe Experten,
ich versuche seit Stunde eine aus dem Netz gefundene Funktion in meine Tabelle einzubauen. Es handelt sich um eine Funktion zur Prüfung der Emailadresse (Syntaxprüfung)
Hier der Code:

Public Function IsValidEMail(S)
Dim Ch As String * 1, i As Long, Ats As Long, Periods As Long
Dim LeftofAt As Boolean, IsLeading As Boolean
IsValidEMail = True
If IsNull(S) Then Exit Function
IsValidEMail = False
LeftofAt = True
IsLeading = True
Periods = 0
Ats = 0
For i = 1 To Len(S)
Select Case Asc(Mid(S, i, 1))
Case Asc("@")
Ats = Ats + 1
' links vom "@" muss wenigstens ein Zeichen sein:
If i = 1 Then Exit Function
' nur ein "@" erlaubt:
If Ats > 1 Then Exit Function
LeftofAt = False
IsLeading = True
Case Asc(".")
' Punkte rechts vom "@" zählen:
If Not LeftofAt Then Periods = Periods + 1
' zu viele Punkte (technisch zwar möglich, aber unwahrscheinlich):
If Periods > 4 Then Exit Function
' Top Level Domain hat weniger als 2 Zeichen:
If i > Len(S) - 2 Then Exit Function
Case Asc("A") To Asc("Z"), Asc("a") To Asc("z"), Asc("0") To Asc("9")
IsLeading = False
Case Asc("-")
' kein führendes "-" erlaubt:
If IsLeading Then Exit Function
Case Asc("_")
' "_" nur links vom "@" erlaubt:
If IsLeading Or Not LeftofAt Then Exit Function
Case Else
' andere Zeichen sind nicht zulässig:
Exit Function
End Select
Next
If Periods > 0 Then IsValidEMail = True
End Function
Ich habe im weiteren eine Userform mit zwei Textfeldern für Emailadressen und zwei CommandButtons (Absenden und Abbruch)
Hier der Code in der Userform

Public Sub CommandButton1_Click()
If Dir("H:\Subkontraktoren-Anlage", vbDirectory) = "" Then
MkDir "H:\Subkontraktoren-Anlage"
Else
ChDir ("H:\Subkontraktoren-Anlage")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"H:\Subkontraktoren-Anlage\Subkontraktoren-Anlage.pdf", openAfterPublish:=False
Dim Outlook As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object
Set Outlookapp = CreateObject("outlook.application")
Set OutlookMailItem = Outlookapp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments
On Error Resume Next
With OutlookMailItem
.To = Me.TextBox1.Value
.Cc = Me.TextBox2.Value
.Subject = Me.TextBox3.Value
.Body = Me.TextBox4.Value
myAttachments.Add "H:\Subkontraktoren-Anlage\Subkontraktoren-Anlage.pdf" _
.Send
End With
Call CommandButton2_Click
End If
End Sub
Wie kann ich die Private Function zur Syntaxabfrage in den Commandbutton1 (Absenden) einbringen (ich habe keinen Plan von functions...)
Schon einmal vielen Dank für die Unterstützung!
VG Gregy

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Emailadresse auf Vollständigkeit prüfen
23.01.2018 19:42:57
Sepp
Hallo Gregy,
zur Prüfung würde ich diese Funktion benutzen:
Private Function IsValidMailAddress(ByVal strAddress As String) As Boolean
Dim oRegExp As Object

Set oRegExp = CreateObject("vbscript.regexp")

With oRegExp
  .Pattern = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|" & _
    "}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:" & _
    "[a-z0-9-]*[a-z0-9])?"
  
  .IgnoreCase = True
  IsValidMailAddress = .test(strAddress)
End With

Set oRegExp = Nothing
End Function

Und anwenden dann so:
Public Sub CommandButton1_Click()
If IsValidMailAddress(textbox1) Then
  If IsValidMailAddress(textbox2) Then
    If Dir("H:\Subkontraktoren-Anlage", vbDirectory) = "" Then
      MkDir "H:\Subkontraktoren-Anlage"
      
    Else
      ChDir ("H:\Subkontraktoren-Anlage")
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "H:\Subkontraktoren-Anlage\Subkontraktoren-Anlage.pdf", openAfterPublish:=False
      
      Dim Outlook As Object
      Dim OutlookMailItem As Object
      Dim myAttachments As Object
      
      Set Outlookapp = CreateObject("outlook.application")
      Set OutlookMailItem = Outlookapp.CreateItem(0)
      Set myAttachments = OutlookMailItem.Attachments
      
      On Error Resume Next
      With OutlookMailItem
        .To = Me.textbox1.Value
        .Cc = Me.textbox2.Value
        .Subject = Me.TextBox3.Value
        .Body = Me.TextBox4.Value
        myAttachments.Add "H:\Subkontraktoren-Anlage\Subkontraktoren-Anlage.pdf"
        .Send
      End With
      Call CommandButton2_Click
    End If
  Else
    MsgBox "CC-Adresse ungültig!"
  End If
Else
  MsgBox "Empfängeradresse ungültig!"
End If

End Sub

Gruß Sepp

Anzeige
AW: Emailadresse auf Vollständigkeit prüfen
24.01.2018 07:59:21
Gregy
Hallo Sepp,
vielen Dank, es funktioniert einwandfrei!!!
Ich werde mich jetzt ranmachen und versuchen zu verstehen was Du da umgesetzt hast.
Gruß Gregy

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige