- This topic has 1 Antwort, 2 Stimmen, and was last updated 09:43 um 14. Mai 2004 by lastwebpage.
- AutorBeitrag
- 14. Mai 2004 um 08:41 #22307UnbekanntParticipant
Hallo,
obwohl ich schon vor längerer Zeit diese Frage gestellt habe, aber die Antworten nicht so recht verstanden habe (bin noch VBA-Anfänger), wollte ich
mal fragen, ob mir jemand mal helfen kann.Ich habe ein OL-Formular gebaut und habe noch 3 Fragen zu den Themen Cc, Bcc und Verteilerlisten.
Der Versand von E-Mails im An, Cc und Bcc-Feld klappt gut. Wenn ich allerdings An ausfülle, aber Cc und/oder Bcc weglasse,
wird keine Mail versandt. Wenn ich keines der 3 Felder ausfülle, dann wird trotzdem versandt.Kann mir jemand einen Tipp geben, wie ich meinen Code in cmdSenden_Click verändern könnte, damit
1) MsgBox \“Sie müssen in die Felder \’An\‘, \’Cc\‘ oder \’Bcc\‘ mindestens eine gültige E-Mail-Adresse eingeben\“, vbExclamation
erscheint, wenn eines der Felder nicht ausgefüllt ist (mit If… Or… klappt es irgendwie nicht) und
2) damit auch dann Mails versandt werden, wenn nur eines oder zwei Felder mit einer E-Mail-Adresse versehen sind.Private Sub cmdSenden_Click()
Dim iAN As Integer, iCC As Integer, iBCC As Integer
For iAN = 0 To cmbAN.ListCount – 1
For iCC = 0 To cmbCC.ListCount – 1
For iBCC = 0 To cmbBCC.ListCount – 1
If Trim(cmbAN.Value) <> \“\“ Or Trim(cmbCC.Value) <> \“\“ Or Trim(cmbBCC.Value) <> \“\“ Then
EmailSenden Me.cmbAN.List(iAN), Me.cmbCC.List(iCC), Me.cmbBCC.List(iBCC), Me.txtBetreff, Me.rtNachricht, Me.rtAktuelles, Me.txtLogo, Me.txtNews, Me.txtAnlage
Else
MsgBox \“Sie müssen in die Felder \’An\‘, \’Cc\‘ oder \’Bcc\‘ mindestens eine gültige E-Mail-Adresse eingeben\“, vbExclamation
End If
Next iBCC
Next iCC
Next iAN
MsgBox \“E-Mail wurde erfolgreich versandt\“, vbInformation
Unload Me
End SubPrivate Sub EmailSenden(sAn As String, Optional sCC As String, Optional sBCC As String, Optional sBetreff As String, Optional sNachricht As String, Optional sAktuelles As String, Optional sLogo As String, Optional sNews As String, Optional sDateiAnhang As String)
Dim sTempNachricht As String
Dim sTempAktuelles As String
Dim NachrichtOL As Object
Dim meinCC As Recipient
Dim meinBCC As Recipient
Set AppOL = GetObject(, \“Outlook.Application\“)
Set NameSpaceOL = AppOL.GetNamespace(\“MAPI\“)
Set NachrichtOL = AppOL.CreateItem(olMailItem)
Set meinCC = NachrichtOL.Recipients.Add(sCC)
meinCC.Type = 2
Set meinBCC = NachrichtOL.Recipients.Add(sBCC)
meinBCC.Type = 3
With NachrichtOL
.Recipients.Add sAn
.CC = sCC
.BCC = sBCC
.Subject = sBetreffsTempNachricht = sNachricht
sTempNachricht = Replace$(sTempNachricht, vbCrLf, \“
\“)
sTempNachricht = Replace$(sTempNachricht, vbNewLine, \“
\“)
sTempNachricht = Replace$(sTempNachricht, \“ \“, \“ \“)sTempAktuelles = sAktuelles
sTempAktuelles = Replace$(sTempAktuelles, vbCrLf, \“
\“)
sTempAktuelles = Replace$(sTempAktuelles, vbNewLine, \“
\“)
sTempAktuelles = Replace$(sTempAktuelles, \“ \“, \“ \“).HTMLBody = \“
\“ & Chr(13) & _
\“\“ & _
\“\“ & _
\“\“ & _
\“\“ & sTempNachricht & \“\“ & _
\“\“ & sTempAktuelles & \“ \“ & Chr(13) & _
\“\“
If sDateiAnhang <> \“\“ Then
.Attachments.Add Source:=sDateiAnhang, Position:=Len(txtAnlage) + 20
End If
.Send
End With
End Sub3) wie könnte ich erreichen, dass ich die UserForm_Activate() auf Verteilerlsiten untersuche und VL bei der
Auswahl auch zulasse. Momentan kann ich nur auf Konktakte mit E-Mail-Adressen zugreifen. Sobald eine VL existiert,
gibt es sofort eine Fehlermeldung. Dem Umgang mit DistListItem-Objekt verstehe ich nicht.Private Sub UserForm_Activate()
On Error GoTo Fehlerbehandlung
Dim KontakteOL As Outlook.MAPIFolder, OrdnerOL As Outlook.MAPIFolder
Set AppOL = GetObject(, \“Outlook.Application\“)
Set NameSpaceOL = AppOL.GetNamespace(\“MAPI\“)
Set KontakteOL = NameSpaceOL.GetDefaultFolder(olFolderContacts)
Me.cmbKontakteOrdner.AddItem \“Hauptordner\“
For Each OrdnerOL In KontakteOL.Folders
Me.cmbKontakteOrdner.AddItem OrdnerOL.Name
Next
Me.cmbKontakteOrdner.ListIndex = 0
Exit Sub
Fehlerbehandlung:
If Err = 429 Then
Set AppOL = CreateObject(\“Outlook.Application\“)
End If
Resume Next
End SubPrivate Sub cmbKontakteOrdner_Change()
Dim OrdnerOL As Outlook.MAPIFolder, KontaktOL As Outlook.ContactItem
Me.lstKontakte.Clear
If Me.cmbKontakteOrdner.ListIndex = 0 Then
Set OrdnerOL = NameSpaceOL.GetDefaultFolder(olFolderContacts)
Else
Set OrdnerOL = NameSpaceOL.GetDefaultFolder(olFolderContacts).Folders(Me.cmbKontakteOrdner.ListIndex)
End If
For Each KontaktOL In OrdnerOL.Items
Me.lstKontakte.AddItem KontaktOL.Email1Address
Next
End SubPrivate Sub cmdVon_Click()
Dim x As Integer
For x = 0 To lstKontakte.ListCount – 1
If lstKontakte.Selected(x) = True Then
lstAN.AddItem lstKontakte.List(x)
End If
Next x
End SubVielen Dank für die Tipps im Voraus.
mfg
BenC14. Mai 2004 um 09:43 #73292lastwebpageModeratorHallo,
also zu Punkt 1 und 2 generell würde ich die Überprüfung der Mailadresse in eine
Unterfunktion schreiben um auf folgendes zu Prüfen
mind 3 Zeichen@mind 3 Zeichen.mind 2 Zeichen,
also Kurz gesagt ob das Eingabeformat überhaupt stimmt,
so,weiter redest du immer bei AN,BB,CC von ODER das ist aber verkehrt!
entweder AN alleine oder AN mit BB,CC, Eine Mail ohne AN geht nicht!
es reicht also zu prüfen ob AN gültig ist.Dieses DistListItem ist einfach nur eine Verteilerliste,die mindestens einen Kontaktenthält.
mfg
Peter
(Nachtrag evtl. lässt dein Provider auch ein senden ohn AN zu,must du mal ausprobieren)[Editiert am 18/7/2004 von lastwebpage]
- AutorBeitrag
Das Thema ‘VBA Outlook 2000: Noch Fragen zum Cc, Bcc und Verteilerlisten’ ist für neue Antworten geschlossen.