수색…


소개

상점 및 상점에 들어있는 폴더에 대한 소개의 첫 부분. 접근 가능한 저장소의 이름 (1)과 접근 가능한 저장소의 이름과 그 안에있는 최상위 폴더를 표시하는 매크로가 들어 있습니다.

2.1 예상되는 사전 지식

  • 당신은 Outlook 사용자이고 "이메일", "수신 된 시간", "제목"및 "폴더 창"과 같은 용어를 이해합니다.
  • Outlook의 Visual Basic Editor에 액세스하여 모듈을 만드는 방법을 알고 있습니다. 필요한 경우 소개 파트 1을 참조하십시오.
  • 최소한 VBA에 대한 기본적인 지식을 갖추고 있어야합니다. 나는 서브 루틴과 변수를 설명없이 선언한다. 나는 Withs, Ifs 및 Loops를 설명없이 사용합니다. 나는 당신에게 무언가가 수집품이라고 말합니다. 코드를 모듈에 복사하여 실행 해 보겠습니다. 대부분은 Excel VBA 용이지만 언어보다 Excel에서 언어를 사용하는 데 더 집중하고 있지만 많은 온라인 자습서가 있습니다. "VBA 자습서"를 검색하면 만족스러운 응용 프로그램보다 더 많은 언어에 집중할 수 있습니다.
  • Outlook 개체 모델을 알 필요는 없습니다. 이 자습서에서는 그 중 일부를 소개합니다.

2.2 상점

Outlook은 전자 메일, 일정 항목, 메모, 작업 등을 상점으로 알려진 파일에 저장 합니다. 폴더 창을 보면 다음과 같은 것을 볼 수 있습니다 :

Aaaaaaaaaa
  Inbox
  Drafts
  Deleted Items
  :  :

Bbbbbbbbbb
  Inbox
  Drafts
  Deleted Items
  :  :

Cccccccccc
:  :

"Aaaaaaaaaa", "Bbbbbbbbbb"및 "Cccccccccc"는 상점의 사용자 또는 표시 이름입니다. 저는 수년 동안 바뀐이 이름들에 대해 항상 Outlook 기본값을 받아 들였습니다. 일단 기본값이 내 이름 이었으면 지금 내 이메일 주소입니다. 이러한 상점의 파일 이름은 동일하지만 PST 또는 OST와 같은 확장자를 사용하거나 완전히 다른 것일 수 있습니다. VBA 매크로는 저장소에 액세스 할 때 사용자 이름이 필요하며 파일 이름이나 확장명과 관련이 없습니다.

원하는만큼의 매장을 보유 할 수 있습니다. 내가 Outlook을 설치할 때 나를 위해 만든 "Outlook 데이터 파일"이 있습니다. 내 이메일 주소에 대한 계정을 추가 할 때 Outlook은 "[email protected]"및 "[email protected]"과 같은 이메일 주소로 이름이 지정된 새 상점을 만들었습니다. 내 메인 저장소의 크기를 줄이기 위해 "Archive 2015"와 같은 이름의 상점에 오래된 이메일을 저장합니다.

비즈니스 사용자 인 경우 공유 저장소 또는 동료 저장소에 액세스 할 수 있습니다.

아래 매크로는 액세스 할 수있는 상점을 나열하는 세 가지 방법을 보여줍니다. 아래 코드를 유지하고 F4 를 사용하여 모듈의 속성에 액세스 할 수 있도록 새 모듈을 만들어 "ModIntro"또는 원하는 다른 이름으로 지정할 수 있습니다. 이 시리즈의 Part 1을 완료했다면, 이미 그러한 모듈을 가지고있을 것입니다.

이 매크로를 모듈에 복사하고 각각이 동일한 출력을 제공하는지 테스트하십시오.

Sub ListStores1()

  Dim InxStoreCrnt As Integer
  Dim NS As NameSpace
  Dim StoresColl As Folders

  Set NS = CreateObject("Outlook.Application").GetNamespace("MAPI")
  Set StoresColl = NS.Folders

  For InxStoreCrnt = 1 To StoresColl.Count
    Debug.Print StoresColl(InxStoreCrnt).Name
  Next

End Sub
Sub ListStores2()
 
 Dim StoresColl As Stores
 Dim StoreCrnt As Store
 
 Set StoresColl = Session.Stores
 
 For Each StoreCrnt In StoresColl
   Debug.Print StoreCrnt.DisplayName
 Next
 
End Sub
Sub ListStores3()

  Dim InxStoreCrnt As Long

  With Application.Session
    For InxStoreCrnt = 1 To .Folders.Count
      Debug.Print .Folders(InxStoreCrnt).Name
    Next
  End With

End Sub

VBA에는 동일한 효과를 얻기위한 여러 가지 방법이 있습니다. 위의 세 가지 방법으로 매장에 액세스했습니다. 그들 모두를 기억할 필요는 없습니다 - 자신이 좋아하는 것을 고르십시오. - 코드를 공부해야 할 수도있는 다른 사람들이 다른 즐겨 찾기를 가지기 때문에 몇 가지 방법이 있음을 알아야합니다.

변수 StoresColl ListStores1()ListStores2() 은 모두 컬렉션이지만 개체 유형은 StoreFolder 입니다. Store 개체는 디스크의 파일 만 참조 할 수 있습니다. Folder 는 디스크의 파일을 참조 할 수 있지만 "받은 편지함"및 "보낸 편지함"과 같은 저장소 내의 폴더를 참조 할 수도 있습니다. Stores , Folders , StoreFolder 는 모두 Outlook 개체 모델의 일부입니다. 이 튜토리얼 시리즈는 모델을 소개하지만 공식적인 정의는 아니다. 정식 정의를 원하면 "outlook vba object model"을 원하는 검색 엔진에 입력하십시오. 모델의 VBA 버전을 확인하십시오.

2.3 최상위 폴더

위의 내 폴더 창 예에서는 "받은 편지함", "임시 보관함"및 "지운 편지함"의 세 가지 표준 폴더 만 나열합니다. 다른 표준 폴더가 있으며 자신이 원하는만큼 많은 폴더를 만들 수 있습니다. 일부 사용자는받은 편지함 아래에 폴더를 만들지 만받은 편지함과 동일한 수준에서 새 폴더를 만드는 것을 선호합니다. 귀하의 폴더는 하위 폴더를 가질 수 있으며, 하위 폴더는 임의의 깊이까지 하위 폴더를 가질 수 있습니다.

다음 매크로는 양식 목록을 생성합니다.

A
   A1
   A2
   A3
B
   B1
   B2
C
   C1
   C2
   C3
   C4

여기서 A, B 및 C는 상점이고 A1, B1, C1 등은 A, B 및 C 내의 폴더입니다. A1, B1, C1 등에는 하위 폴더가있는 경우이 매크로에 의해 나열되지 않습니다. 더 깊이 중첩 된 폴더에 액세스하는 방법은이 자습서의 다음 부분에서 다룹니다.

Sub ListStoresAndTopLevelFolders()

  Dim FldrCrnt As Folder
  Dim InxFldrCrnt As Long
  Dim InxStoreCrnt As Long
  Dim StoreCrnt As Folder

  With Application.Session
    For InxStoreCrnt = 1 To .Folders.Count
      Set StoreCrnt = .Folders(InxStoreCrnt)
      With StoreCrnt
        Debug.Print .Name
        For InxFldrCrnt = .Folders.Count To 1 Step -1
          Set FldrCrnt = .Folders(InxFldrCrnt)
          With FldrCrnt
            Debug.Print "   " & .Name
          End With
        Next
      End With
    Next
  End With

End Sub

2.4이 튜토리얼에서 기억해야 할 사항

  • 저장소는 Outlook에서 전자 메일, 일정 항목, 메모, 작업 등을 저장하는 파일입니다.
  • 저장소에는 "받은 편지함"및 "보낸 편지함"과 같은 Outlook 표준 폴더가 포함될 수 있습니다.
  • 상점에는 사용자가 작성한 폴더가있을 수도 있습니다.
  • Outlook 표준 폴더와 사용자 생성 폴더는 사용자가 생성 한 하위 폴더, 하위 하위 폴더 등을 모든 깊이에 포함 할 수 있습니다.
  • 상점을 나열하는 방법.
  • 해당 상점 내의 상점 및 최상위 레벨 폴더를 나열하는 방법.

고백 : 나는 "Hows"중 어느 것도 기억하지 않는다. 나는 나를 기억하는 서브 루틴과 함수를 가지고있다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow