2013-08-05 6 views
0

Итак, во-первых, я очень новичок в VBA, и из-за количества писем, которые я получаю, которые следуют определенному шаблону, я пытаюсь автоматизировать сортировку данных, чтобы спасти себя от всех сокращений и склеивания, которые в настоящее время требуются. Я посмотрел на некоторые предыдущие вопросы, но из-за моих очень маленьких знаний ответы не были достаточно конкретными, чтобы я мог понять.Извлечение определенной информации из Outlook 2003 в Excel с помощью VBA

Каждый из этих электронных писем от конкретного адреса электронной почты и имеет стандартный формат, как показано ниже:

« дд/мм/гггг hr.min.sec

ххх XXXXXXX xxxxxxxxxxxxxxxxx хххх ххххх»

Я хотел бы экспортировать или скопировать эту информацию на рабочий лист excel 2003, чтобы каждая отдельная информация находилась в новом столбце одной строки, где каждое электронное письмо представляет собой новую строку. Я хотел бы, чтобы макрос мог выполнять поиск по моим полученным электронным письмам в определенной папке (поскольку я уже установил некоторые правила в Outlook, относящемся к этому адресу электронной почты), скопируйте информацию из каждого электронного письма, соответствующего шаблону, и вставьте его в один рабочий лист excel. Затем каждый раз, когда я получаю новое электронное письмо, информация будет добавлена ​​в нижнюю часть таблицы, которая была создана.

Надеюсь, что все имеет смысл, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Заранее спасибо.

ответ

0

Недавно я сделал что-то подобное, за исключением того, что я ввел его в базу данных доступа вместо листа excel, но идея такая же. По какой-то причине у меня возникли проблемы с ее запуском с правилами, но я все равно обнаружил, что могу лучше контролировать это из макроса, запускаемого вручную. Поэтому используйте правило, чтобы поместить все в папку, и создайте подпапку AlreadyProcessed. Вот код, чтобы начать с:

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 

Making файлов Excel с VBA очень легко - просто прочитать об открытии Excel и сделать новые документы из другой программы Офиса VBAs - вы ищете Excel.Application. Вы даже можете записать макрос в 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, чтобы убедиться, что он является правильным отправителем.

Если вы предоставите более конкретную информацию, я могу внести изменения в код.

 Смежные вопросы

  • Нет связанных вопросов^_^