Visual Studio Code
아웃룩 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 ... )

 

 

비주얼베이직은 다뤄본 적이 없어서 어렵네요ㅠ

댓글 2