2016-06-29 6 views
-1

나는 Excel에서 Outlook으로의 Alt Tabbing에서 시간을 절약하는 데 도움이되는 매우 간단한 작은 응용 프로그램을 염두에두고 있습니다. 교환 사용자 별명에 대한 텍스트 상자가 있고 교환 사용자의 전체 이름을 반환하는 작은 userform을 만들고 싶습니다. 이제 내가 가진 문제는 msdn의 가이드가 사용자 폼에 대해 다소 모호하다는 것입니다. https://msdn.microsoft.com/en-us/library/office/ff869721.aspx 및 일부 오류 메시지가 표시되고 일부는 일부 참조를 활성화하여 수정되었습니다. 코드가 복잡합니다.Excel VBA, GAL 값

기본적으로 2 개의 텍스트 상자와 버튼이 있습니다. textbox1은 별칭을 수락하고 textbox2는 버튼을 클릭 한 후 사용자 이름을 반환합니다.

몇 가지 예가 있지만 그 중 대부분은 GAL을 필요없는 Excel 파일로 덤프합니다.

고맙습니다 덕분에

+1

기존 코드에 문제가있는 경우 오류와 발생하는 라인과 함께 게시하는 것이 가장 좋습니다. –

답변

0

이것은 당신에게 당신을 줄 것입니다.

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 

GAL이 상당히 클 경우 다소 시간이 걸릴 수 있습니다.
배열을 먼저 덤프하고 거기에서 조작 할 수 있는지 확인합니다.
또는 다른 방법을 사용하여 별칭을 통해 이름을 가져 오는 다른 방법이있는 경우
하지만 지금 당장은 먼저 이것을 배우십시오.

TextBox2 = GetFullname(TextBox1) 

참고 :

은 간단하게 할 수있는, 그래서 당신의 텍스트 상자에 그걸 얻기 위해, 함수 내가 의도적으로 모든 개체를 선언
, 당신이 알아야 할 객체의 어떤 종류 노력하고있어. 또한 Alias없이 AddressEntry이 있고 오류가 발생하여 On Error Resume Next을 사용했습니다. 그것은 내가 생각할 수있는 가장 쉬운 작업입니다.

요구 사항 : 당신은 Microsoft Outlook xx.x Object Library를 참조 할 필요가
.
xx.x은 컴퓨터에 설치된 Outlook 버전에 따라 다릅니다.

+0

안녕하세요. 응답 주셔서 감사합니다. 나는 어디에서 textbox1.text (별칭에 대한 검색 값)를 던질 수 있는지 코드에서 볼 수 없다. olmem = textbox1.text를 선언합니까? – wh3resmycar2

+0

@ wh3resmycar2 내가 제공 한 것은 '함수'입니다. 혼자 서있다. 그것을'UserForm' 코드에 포함시킨 다음 임의의 이벤트에서 호출하십시오 (예 :'CommandButton1_Click()'). – L42