2016-06-29 4 views
-1

J'ai une petite application très simple à l'esprit qui va m'aider à gagner du temps d'alt tabbing d'Excel à Outlook. Je veux créer un petit userform qui aura une zone de texte pour un alias d'utilisateur d'échange et retournera le nom complet de l'utilisateur d'échange. maintenant la question que j'ai ici est que le guide dans msdn est un peu vague pour un userform: https://msdn.microsoft.com/en-us/library/office/ff869721.aspx et je reçois quelques messages d'erreur, certains ont été corrigés en activant des références. et le code est assez compliqué.Excel VBA, retour valeur GAL

Donc, fondamentalement, j'ai 2 zones de texte et un bouton. textbox1 acceptera l'alias, textbox2 retournera le nom d'utilisateur après avoir cliqué sur le bouton.

Il existe plusieurs exemples mais la plupart d'entre eux entraîneront le vidage de la liste d'adresses globale dans un fichier Excel dont je n'ai pas besoin.

merci d'avance

+1

Si vous rencontrez un problème avec le code existant, il est préférable de le publier, avec l'erreur exacte et la ligne sur laquelle il se produit. –

Répondre

0

Cela vous donnera ce que vous voulez.

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 

L'inconvénient est que cela peut prendre un certain temps si votre GAL est assez grande.
Je vais vérifier si je peux d'abord vider la liste à un tableau et ensuite manipuler à partir de là.
Ou s'il y a un autre moyen d'accéder au nom via un alias en utilisant une autre méthode.
Mais pour l'instant, essayez d'en apprendre d'abord.

Cette fonction est, pour ainsi obtenir à votre zone de texte, vous pouvez simplement:

TextBox2 = GetFullname(TextBox1) 

Note:
Je déclarai volontairement tous les objets, vous avez besoin de savoir quel type d'objet travaillons sur. Aussi j'ai utilisé Sur l'erreur Resume Suivant parce qu'il y a AddressEntry sans Alias et qui donne l'erreur. C'est le travail le plus facile auquel je puisse penser pour le moment.

Exigence:
Vous devez faire référence Microsoft Outlook xx.x Object Library.
xx.x varient en fonction de la version d'Outlook installée sur votre machine.

+0

salut. Merci pour la réponse. Je ne peux pas voir dans le code où je peux jeter le textbox1.text (la valeur de recherche pour l'alias) autour. déclarez olmem = textbox1.text? – wh3resmycar2

+0

@ wh3resmycar2 Ce que j'ai fourni est une 'fonction'. Il est autonome. Incluez-le dans le code 'UserForm', puis appelez-le dans l'un de vos événements (par exemple' CommandButton1_Click() ') – L42