Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

smtp Exchange Server - Nur Angezeigter Name | Herbers Excel-Forum


Betrifft: smtp Exchange Server - Nur Angezeigter Name von: chris b.
Geschrieben am: 29.08.2008 07:12:09

Hallo zusammen, leider habe ich hier keine Antwort bekommen.
Vielleicht wurde mein beitrag übersehen.
oder gibt es keine Lösung ??
Würde mich über Hilfe sehr freuen !!
Vielen dank gruß Chris

https://www.herber.de/forum/messages/1005350.html

  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: bst
Geschrieben am: 29.08.2008 09:05:12

Morgen,

poste mal Dein Makro her.

cu, Bernd


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: chris b.
Geschrieben am: 29.08.2008 09:34:08

Guten morgen,Danke für deine Hilfe....
Leider kann ich nicht den ganzen code posten.Aber ich hoffe das reicht.
So lese ich oder Starte ich das Addressbuch, wähle einen Empfänger aus.
Und von diesem Empfänger benötige ich die smtp Addresse und nicht den angezeigten Namen.
Danke nochnochmals für die Hilfe !!

gruß Chris



Dim objSession As MAPI.Session
Dim objRecipients As MAPI.Recipients
Dim objRecipient As MAPI.Recipient
Dim iRow As Integer

Set objSession = CreateObject("MAPI.Session")
''objSession.Logon "Default Outlook Profile"
objSession.Logon "", , , False
On Error Resume Next
Set objRecipients = objSession.AddressBook( _
Recipients:=objRecipients, _
Title:="Wählen Sie den oder die Empfänger - Verteiler 1")

If Not objRecipients Is Nothing Then

Worksheets("Verteiler").Unprotect "p"

For Each objRecipient In objRecipients
For iRow = 2 To 100

If iRow = 100 Then End
If Worksheets("Verteiler").Cells(iRow, x) = "" Then
Exit For
Else
End If
Next
Cells(iRow, x).Value = objRecipient.Name

Next objRecipient
Worksheets("Verteiler").Protect "p"
End If
objSession.Logoff
Exit Sub


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: bst
Geschrieben am: 29.08.2008 09:51:47

Hi,

vermutlich reicht hier ein objRecipient.Resolve oder auch ein objRecipients.ResolveAll.

Schau Dir das mal in der Outlook VBA-Hilfe an.

HTH, Bernd


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: chris b.
Geschrieben am: 29.08.2008 10:06:49

VBA ist leider nicht so gut.
Bitte hilf mir wie ich das in meinen code einbauen kann.
Danke


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: bst
Geschrieben am: 29.08.2008 10:12:38

Hi,

einfach mal ein:

objRecipient.Resolve

direkt unter:

For Each objRecipient In objRecipients

oder ein

objRecipients.ResolveAll

direkt darüber.

Dann mal im Einzelschrittmodus durch den Code gehen und Dir objRecipient anschauen.

Da ich hier keinen Exchange-Server habe kann ich das auch nicht probieren...

cu, Bernd


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: chris b.
Geschrieben am: 29.08.2008 10:56:23

meinst du etwa so ?
Sehe so gar nichts ???

Option Explicit

Sub neu()
Dim objSession As MAPI.Session
   Dim objRecipients As MAPI.Recipients
   Dim objRecipient As MAPI.Recipient
   Dim iRow As Integer
   Dim x As Integer
   
   Set objSession = CreateObject("MAPI.Session")
   ''objSession.Logon "Default Outlook Profile"
   objSession.Logon "", , , False
   On Error Resume Next
   Set objRecipients = objSession.AddressBook( _
      Recipients:=objRecipients, _
      Title:="Wählen Sie den oder die Empfänger - Verteiler 1")
   
   If Not objRecipients Is Nothing Then
      
      objRecipients.ResolveAll
      objRecipient.Resolve
      
      For Each objRecipient In objRecipients
                  objRecipients.ResolveAll
      objRecipient.Resolve
        
      Next objRecipient
      

   End If
   objSession.Logoff
   Exit Sub
End Sub




  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: bst
Geschrieben am: 29.08.2008 11:16:04

Hi,

nein.

Du schriebst:

"So lese ich oder Starte ich das Addressbuch, wähle einen Empfänger aus.
Und von diesem Empfänger benötige ich die smtp Addresse und nicht den angezeigten Namen."

Ich bin schon davon ausgegangen, dass dieser Code dann auch funktioniert. Probiert habe ich den nämlich nicht.

Und, alles was Du dann tun musst ist es IMHO unter der For Schleife einmal einen resolve aufzurufen. Der sollte nämlich dafür sorgen dass Deine vorherige Adresse im Active-Directory-Format (?) in eine normale Email-Adresse aufgelöst wird.

Den Rest des Codes lasse wie er war, er hat ja schließlich funktioniert, oder?

HTH, Bernd


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: chris b.
Geschrieben am: 29.08.2008 11:28:05

ok Danke für den Versuch klappt bei mir nicht.
Istscheinbar irgendwie nicht möglich...
Habe jetzt diesen Code und es bringt mir 2 msgboxen
die eine vor den resolve udn die andere danach.
beides mal die gleiche meldung.
Danke trotzdem und ich lasse mal offen vielleicht kann mir noch jemand helfen.

Option Explicit

Sub neu()
Dim objSession As MAPI.Session
   Dim objRecipients As MAPI.Recipients
   Dim objRecipient As MAPI.Recipient
   Dim iRow As Integer
   Dim x As Integer
   Dim xx
   
   Set objSession = CreateObject("MAPI.Session")
   ''objSession.Logon "Default Outlook Profile"
   objSession.Logon "", , , False
   On Error Resume Next
   Set objRecipients = objSession.AddressBook( _
      Recipients:=objRecipients, _
      Title:="Wählen Sie den oder die Empfänger - Verteiler 1")

      For Each objRecipient In objRecipients
      
MsgBox objRecipient.Name

objRecipient.Resolveall
MsgBox objRecipient.Name
      
      Next objRecipient

   
   objSession.Logoff
   Exit Sub
End Sub




  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: bst
Geschrieben am: 29.08.2008 11:38:54

Hi,

hast Du denn überhaupt schon einmal in die Outlook VBA-Hilfe geschaut?

ResolveAll ist ein Methode von Recipients, nicht von Recipient.

Es muss M.E. also korrekt lauten:

objRecipient.Resolve

Und, setze da doch einfach mal einen Breakpoint hin und schaue Dir objRecipient dann im Überwachungsfenster an.

Da ich das hier nicht testen kann, stelle ich mal auf Offen.

cu, Bernd


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: chris b.
Geschrieben am: 29.08.2008 13:36:28

ich setzte mal auf geschlossen.
Habe eine möglichkeit gefunden.Ist zwar nicht sehr sauber aber klappt einigermaßen..
die schleife habe ich eingebaut weil ich die smtp Addresse manchmal unter item z.b 30 finde und manchmal unter 31 oder 32 danke noch einmal ! An alle !!!


Dim objSession As MAPI.Session
Dim objRecipients As MAPI.Recipients
Dim objRecipient As MAPI.Recipient
Dim iRow As Integer

Set objSession = CreateObject("MAPI.Session")
''objSession.Logon "Default Outlook Profile"
objSession.Logon "", , , False
On Error Resume Next
Set objRecipients = objSession.AddressBook( _
Recipients:=objRecipients, _
Title:="Wählen Sie den oder die Empfänger - Verteiler 1")

If Not objRecipients Is Nothing Then

Worksheets("Verteiler").Unprotect "p"

For Each objRecipient In objRecipients
For iRow = 2 To 100

'Leere zeile finden
If iRow = 100 Then End
If Worksheets("Verteiler").Cells(iRow, x) = "" Then
Exit For
Else
End If
Next

anz = UCase(objRecipient.AddressEntry.Fields.Count)


On Error GoTo fehler
For xx = 40 To anz
If InStr(objRecipient.AddressEntry.Fields(xx).Value, "@") > 0 Then
Exit For
Else
End If
Next

Cells(iRow, x).Value = objRecipient.AddressEntry.Fields(xx).Value

Next objRecipient
Worksheets("Verteiler").Protect "p"
End If
objSession.Logoff
Exit Sub

verteiler:
For iRow = 2 To 100
If iRow = 100 Then End
If Worksheets("Verteiler").Cells(iRow, x) = "" Then
Exit For
Else
End If

Next
Worksheets("Verteiler").Unprotect "passi"
Cells(iRow, x).Value = wer_smtp
Worksheets("Verteiler").Protect "passi"

Exit Sub

fehler:
MsgBox ("fehler beim hinzufügen einer Addresse"), vbCritical, "Bitte an Administratior wenden"

End Sub


  

Betrifft: AW: smtp Exchange Server - Nur Angezeigter Name von: Tino
Geschrieben am: 29.08.2008 09:37:12

Hallo,
kann ich dir damit weiterhelfen?
Den Verweis auf Microsoft Outlook Object Library musst du noch setzen

Modul Modul1

Option Explicit 
'*********************************************************** 
'*Benötigt den Verweis auf Microsoft Outlook Object Library* 
'*********************************************************** 
Sub LeseSenderMailAddress() 
Dim objOutlook As Outlook.Application 
Dim objNameSpace As Namespace 
Dim objFolder As MAPIFolder 
Dim objMsg As MailItem 
Dim lngRow As Long 
  Set objOutlook = New Outlook.Application 
  Set objNameSpace = objOutlook.GetNamespace("MAPI") 
  Set objFolder = objNameSpace.Folders("Persönliche Ordner").Folders("Posteingang") 
 
     Application.ScreenUpdating = False 
        On Error Resume Next 
           For Each objMsg In objFolder.Items 
            lngRow = lngRow + 1 
            Cells(lngRow, 1) = objMsg.SenderEmailAddress 
           Next objMsg 
        On Error GoTo 0 
     Application.ScreenUpdating = True 
    
   Set objMsg = Nothing 
   Set objFolder = Nothing 
   Set objNameSpace = Nothing 
   Set objOutlook = Nothing 
End Sub 




Gruß Tino

www.VBA-Excel.de




  

Betrifft: nicht Posteingang?!! von: Tino
Geschrieben am: 29.08.2008 09:46:46

Hallo,
wie komme ich den auf den Posteingang??
Teste mal dies:
Modul Modul1

Option Explicit 
'*********************************************************** 
'*Benötigt den Verweis auf Microsoft Outlook Object Library* 
'*********************************************************** 
Sub test() 
 
Dim objOutlook As Outlook.Application 
Dim objNameSpace As Namespace 
Dim objMapiFolder As MAPIFolder 
Dim objItems As Items 
Dim zaehler As Integer 
  Set objOutlook = New Outlook.Application 
  Set objNameSpace = objOutlook.GetNamespace("MAPI") 
  Set objMapiFolder = objNameSpace.GetDefaultFolder(olFolderContacts) 
  Set objItems = objMapiFolder.Items 
         
        Application.ScreenUpdating = False 
          For zaehler = 1 To objItems.Count 
            Cells(zaehler, 1) = objItems(zaehler).Email1Address 
          Next zaehler 
        Application.ScreenUpdating = True 
 
Set objNameSpace = Nothing 
Set objNameSpace = Nothing 
Set objMapiFolder = Nothing 
Set objItems = Nothing 
End Sub 
 



Gruß Tino

www.VBA-Excel.de




  

Betrifft: noch offen von: chris b.
Geschrieben am: 29.08.2008 09:56:25

Danke Tino aber leider hilft mir das nicht weiter.
Wir arbeiten hier mir Exchange Server... Was das genau ist oder wo der unterschied ist weiß ich nicht und kenne ich nicht.
Aber ich habe die ganzen Einträge nicht in Kontakte sondern in der "Globalen Addressliste"

Hoffe es kann mir trotzdem jemand helfen !
Danke im vorraus !


  

Betrifft: nachtrag noch offen von: chris b.
Geschrieben am: 29.08.2008 09:59:07

Auch wenn ich Manuell einen Empfänger aus dem Globalen Addressbuch einfügen würde in Kontakte schreibt dein VBa Script folgendes in die zelle.Mit dem kann ich auch nichts anfangen...

/o=firma/ou=MAIL04/cn=RecipientsBa/cn=Chris.meinnachname

Danke für alle weiteren Hilfen


  

Betrifft: AW: nachtrag noch offen von: Tino
Geschrieben am: 29.08.2008 10:12:13

Hallo,
nächste Woche kann ich dies bei uns auf der Arbeit mal testen, wie man ans Globale Adressbuch kommt und die Daten entsprechend auslesen kann.
Vielleicht hat bis dahin aber ein anderer schon die Lösung, daher lass ich die Frage offen.

Warum bei dir solch eine Zeile in der Zelle zustande kommt verstehe ich aber jetzt auch nicht!
Bei mir wird die Mailadresse gelesen??

Gruß Tino


  

Betrifft: AW: nachtrag noch offen von: chris b.
Geschrieben am: 29.08.2008 10:21:34

Ok wäre super.Ich lass auch offen ansonsten bis nächste Woche !
Schönes Wochenende! Hoffe du vergisst mich nicht :)
gruß Chris


Beiträge aus den Excel-Beispielen zum Thema "smtp Exchange Server - Nur Angezeigter Name"