2016-06-29 10 views
-1

Ich habe eine sehr einfache kleine App im Auge, die mir helfen wird, Zeit von Alt Tabbing von Excel zu Outlook zu sparen. Ich möchte ein kleines Benutzerformular erstellen, das ein Textfeld für einen Exchange-Benutzer-Alias ​​enthält und den vollständigen Namen des Exchange-Benutzers zurückgibt. jetzt das Problem, das ich hier habe, ist, dass die Anleitung in msdn für ein Benutzerformular ein wenig vage ist: https://msdn.microsoft.com/en-us/library/office/ff869721.aspx und ich bekomme einige Fehlermeldungen, einige wurden durch die Aktivierung einiger Referenzen behoben. und der Code ist ziemlich kompliziert.Excel VBA, Rückgabe GAL Wert

so im Grunde habe ich 2 Textfelder und eine Schaltfläche. textbox1 akzeptiert den Alias, textbox2 gibt den Benutzernamen nach dem Klick auf den Button zurück.

Es gibt mehrere Beispiele, aber die meisten von ihnen werden dazu führen, dass die GAL in eine Excel-Datei, die ich nicht brauche, abgelegt wird.

Dank fortschrittlicher

+1

Wenn Sie Probleme mit vorhandenem Code haben, sollten Sie ihn zusammen mit dem genauen Fehler und der Zeile, auf der er auftritt, veröffentlichen. –

Antwort

0

Das werden Sie, was Sie wollen.

Private Function GetFullName(inAlias As String) As String 
    Dim olApp As Outlook.Application 
    Dim olNS As Outlook.Namespace 
    Dim olAdd As Outlook.AddressEntries 
    Dim olMem As Outlook.AddressEntry 
    Dim olLst As Outlook.AddressList 
    Dim olAlias As String 

    On Error Resume Next 
    Set olApp = New Outlook.Application 
    On Error GoTo 0 

    If olApp Is Nothing Then 
     GetFullName = "Source not available" 
     Exit Function 
    End If 

    Set olNS = olApp.GetNamespace("MAPI") 
    Set olLst = olNS.GetGlobalAddressList 
    Set olAdd = olLst.AddressEntries 

    For Each olMem In olAdd 
     On Error Resume Next 
     olAlias = olMem.GetExchangeUser.Alias 
     On Error GoTo 0 
     If olAlias = inAlias Then 
      GetFullName = olMem.GetExchangeUser.Name 
      Exit For 
     Else 
      GetFullName = "Invalid Alias" 
     End If 
    Next 
    Set olApp = Nothing: Set olNS = Nothing: Set olAdd = Nothing 
End Function 

Der Nachteil ist, dass dies eine Weile dauern kann, wenn Ihre GAL ziemlich groß ist.
Ich werde überprüfen, ob ich die Liste zuerst an ein Array ausgeben und dann von dort aus manipulieren kann.
Oder wenn es einen anderen Weg gibt, um den Namen über Alias ​​mit anderen Methoden zu erhalten.
Aber jetzt, versuche zuerst von diesem zu lernen.

Dies ist eine Funktion, so dass es auf Ihre Textbox zu bekommen, können Sie einfach:

TextBox2 = GetFullname(TextBox1) 

Hinweis:
ich die Gegenstände absichtlich alle erklärt, müssen Sie wissen, welche Art von Objekt, das Sie arbeite weiter. Auch ich habe On Error Resume Next verwendet, weil es AddressEntry ohne Alias gibt und das gibt Fehler. Das ist die einfachste Arbeit, die ich mir vorstellen kann.

Voraussetzung:
Sie müssen Microsoft Outlook xx.x Object Library verweisen.
xx.x variieren je nach der Outlook-Version auf Ihrem Computer installiert.

+0

Hallo. Danke für die Antwort. Ich kann im Code nicht sehen, wo ich den textbox1.text (der Suchwert für den Alias) herumwerfen kann. deklariere olmem = textbox1.text? – wh3resmycar2

+0

@ wh3resmycar2 Was ich zur Verfügung gestellt habe, ist eine 'Funktion'. Es ist eigenständig. Fügen Sie es in den 'UserForm'-Code ein und rufen Sie es dann in einem Ihrer Ereignisse auf (z. B. CommandButton1_Click()') – L42