아웃룩 VBA 매크로 관련 질문 드립니다.
Public Sub SaveAttachments()
Dim objOL As Outlook.Application
Dim objMsg As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim objSelection As Outlook.Selection
Dim i As Long
Dim lngCount As Long
Dim strFile As String
Dim strFolderpath As String
Dim strDeletedFiles As String
strFolderpath = "C:\"
Set objOL = CreateObject("Outlook.Application")
Set objSelection = objOL.ActiveExplorer.Selection
For Each objMsg In objSelection
objMsg.UnRead = False
Set objAttachments = objMsg.Attachments
lngCount = objAttachments.Count
strDeletedFiles = ""
If lngCount > 0 Then
For i = lngCount To 1 Step -1
strFile = objAttachments.Item(i).FileName
strFile = strFolderpath & strFile
objAttachments.Item(i).SaveAsFile strFile
Next i
End If
Next
MsgBox (" Download Complete")
ExitSub:
Set objAttachments = Nothing
Set objMsg = Nothing
Set objSelection = Nothing
Set objOL = Nothing
End Sub
인터넷에서 위의 코드를 발견해서 실습중에 있었습니다.
아웃룩 365 사용중이며, 위의 매크로는 실행시킬경우, 선택한 메일의 첨부파일을 모두, 코드에 지정해둔 폴더에 다운로드하고, Download Complete 메시지 출력후 정지됩니다.
그런데 위의 코드대로 실행 할 경우 이름이 동일한 첨부파일을 그대로 덮어씌우는 문제가 있었습니다.
그래서 위 코드를 살짝 수정해서, 메일을 여러개 선택한 경우, 자동적으로 각각 메일별 폴더를 생성하고, 그 각각의 폴더들에 해당 메일별 첨부파일을 저장하도록 하고 싶습니다.
( 예를 들면 메일이 A, B, C 3개 일 경우, 미리지정 해둔 경로에 A, B, C 폴더 3개를 생성하고, 각 폴더에 해당되는 메일의 첨부파일을 저장하도록 하고 싶습니다. 이때 자동 생성되는 폴더명은, (yyyy.mm.dd.01) 이런식의 규칙을 따르면 좋겠습니다. 예시 : 2020.06.09.01 , 2020.06.09.02 ... )
비주얼베이직은 다뤄본 적이 없어서 어렵네요ㅠ
날짜와 순서로 폴더 이름을 만들어서 해당 폴더가 존재하지 않으면 폴더를 생성하는
아래 코드가 참고가 되시기 바랍니다.