outlook-vba
소개 2 부 : 상점 및 최상위 폴더
수색…
소개
상점 및 상점에 들어있는 폴더에 대한 소개의 첫 부분. 접근 가능한 저장소의 이름 (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()
은 모두 컬렉션이지만 개체 유형은 Store
및 Folder
입니다. Store
개체는 디스크의 파일 만 참조 할 수 있습니다. Folder
는 디스크의 파일을 참조 할 수 있지만 "받은 편지함"및 "보낸 편지함"과 같은 저장소 내의 폴더를 참조 할 수도 있습니다. Stores
, Folders
, Store
및 Folder
는 모두 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"중 어느 것도 기억하지 않는다. 나는 나를 기억하는 서브 루틴과 함수를 가지고있다.