2013-08-05 3 views
0

첫 번째로 VBA를 처음 접했을 때 특정 템플릿을 따르는 이메일 수가 많아서 자신을 구하기 위해 데이터 정렬을 자동화하려고합니다. 현재 필요한 모든 절단 및 붙여 넣기에서. 나는 몇 가지 이전 질문을 살펴 봤지만 약간의 지식으로 답변이 명확하지 않아 이해할 수 없습니다.VBA를 사용하여 Outlook 2003에서 Excel로 특정 정보 추출 Excel

이러한 이메일들의 각각은 특정 이메일 주소이고 아래와 같은 표준 포맷을 가지고

" 일/월/년

XXX XXXXXXX xxxxxxxxxxxxxxxxx XXXX의 xxxxx hr.min.sec"

Excel 2003 워크 시트에이 정보를 내보내거나 복사하여 각각의 개별 정보가 단일 행의 새 열에 있도록합니다 (각 전자 메일은 새 행임). 매크로가 특정 폴더에있는 수신 이메일을 검색 할 수있게하려면 (이미이 이메일 주소와 관련하여 Outlook에서 일부 규칙을 설정 했으므로) 템플릿과 일치하는 각 이메일의 정보를 복사하여 붙여 넣으십시오 하나의 엑셀 워크 시트에. 그런 다음 새 이메일이 도착할 때마다 정보가 작성된 테이블 하단에 추가됩니다.

정보가 더 필요하면 잘 부탁드립니다.

미리 감사드립니다.

답변

0

엑셀 시트가 아닌 액세스 데이터베이스에 입력 한 것을 제외하고는 최근에 이와 비슷한 작업을했지만 아이디어는 같습니다. 어떤 이유로 규칙을 실행하는 데 문제가 있었지만 수동으로 실행되는 매크로에서 더 잘 제어 할 수 있다는 것을 알았습니다. 규칙을 사용하여 모든 것을 폴더에 넣고 그 아래에 AlreadyProcessed 하위 폴더를 만드십시오. VBA에서 Excel 파일을 만들기

Sub process() 
    Dim i As Integer, folder As Object, item As Object 
    With Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Folders("YourFolderName") 
    For Each item In .Items 
     processMail item 
     item.Move .Folders("AlreadyProcessed") 
    Next 
    End With 
End Sub 

Sub processMail(item As Outlook.MailItem) 
    Dim bitsOfInformation() As String 
    bitsOfInformation = Split(item.Body, " ") 
    'Use this information to make an Excel file 
End Sub 

매우 쉽게되어 당신이 Excel.Application을 찾고 - - 단지 엑셀을 열고 다른 Office 프로그램 VBAs에서 새 문서를 만드는 읽어 : 여기에서 시작하는 몇 가지 코드입니다. Excel에서 매크로를 기록하고 수동으로 정보를 채우며 기본적으로 코드를 Outlook으로 복사하고 하드 코딩 된 정보를 변수로 바꿀 수 있습니다. 그러나 수천 통의 전자 메일에서이 작업을 실행하려는 경우 기록 된 매크로 (선택 개체를 사용하는 매크로)가 비효율적이라는 경고를받습니다. 다음 코드로

0

시작 :

Private WithEvents Items As Outlook.Items 

Private Sub Application_Startup() 
    Set Items = GetItems(GetNS(GetOutlookApp), olFolderInbox) 
End Sub 

Private Sub Items_ItemAdd(ByVal item As Object) 
    On Error GoTo ErrorHandler 

    Dim msg As Outlook.MailItem 

    If TypeName(item) = "MailItem" Then 
    Set msg = item 



    End If 
ProgramExit: 
    Exit Sub 
ErrorHandler: 
    MsgBox Err.Number & " - " & Err.Description 
    Resume ProgramExit 
End Sub 
Function GetItems(olNS As Outlook.NameSpace, folder As OlDefaultFolders) As Outlook.Items 
    Set GetItems = olNS.GetDefaultFolder(folder).Items 
End Function 
Function GetNS(ByRef app As Outlook.Application) As Outlook.NameSpace 
    Set GetNS = app.GetNamespace("MAPI") 
End Function 
Function GetOutlookApp() As Outlook.Application 
    Set GetOutlookApp = Outlook.Application 
End Function 

이 기본받은 편지함에 이벤트 리스너를 설정합니다. 전자 메일 메시지를받을 때마다 If TypeName 문 안의 코드가 실행됩니다. 이제는 실행하고자하는 코드의 문제 일뿐입니다.

.SenderName 또는 .SenderEmailAddress 속성을 사용하여 보낸 사람을 확인하여 올바른 발신인인지 확인할 수 있습니다.

자세한 정보를 제공하면 코드를 수정할 수 있습니다.

관련 문제