Visual Studio Code

아웃룩 VBA 매크로 관련 질문 드립니다.

0
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 strF..
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 ... )

 

 

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

CastleWon 2020-06-09
+
CastleWon 님께서 2020-06-09에 Visual Studio Code에 올린 질문

댓글

1개의 답변

0
날짜와 순서로 폴더 이름을 만들어서 해당 폴더가 존재하지 않으면 폴더를 생성하는 아래 코드가 참고가 되시기 바랍니다. Private Sub Create_Folder() Dim Number As Integer, sBasePath As String, sFolderPath As String ..

날짜와 순서로 폴더 이름을 만들어서 해당 폴더가 존재하지 않으면 폴더를 생성하는

아래 코드가 참고가 되시기 바랍니다.

Private Sub Create_Folder()
    Dim Number As Integer, sBasePath As String, sFolderPath As String

    Number = 1
    sBasePath = "C:\temp\Test"
    sFolderPath = sBasePath & DateTime.Now.ToString("yyyy.mm.dd.")

    With New Scripting.FileSystemObject
        Do While .FolderExists(sFolderPath)
            Number = Number + 1
            sFolderPath = sBasePath & DateTime.Now.ToString("yyyy.mm.dd.") & Number
        Loop

       .CreateFolder sFolderPath
    End With
End Sub

 

visualbasic vb
kimho 2020-06-09
+
사탕 주기
kimho 님께서 2020-06-09에 Visual Studio Code에 올린 글
보관하기

댓글

조회수 1,428
답글 1
URL