2016-07-29 3 views
2

Это касается EXcel & Outlook 2013 -Экспорт данных по электронной почте в конкретных областях в CSV файл (или файл XLS)

Я работаю над проблемой, когда мне нужно ...

  1. Получить по электронной почте
  2. ли, что электронная почта автоматически перемещаются в отдельную папку
  3. Have любой электронной почты в указанной папке экспортируется в файл .csv
  4. Данные в этом файле должны быть помещены в определенные столбцы.

Я могу достичь всего вышеперечисленного, кроме # 4. Скрипт помещает весь текст письма в разные ячейки в зависимости от точек останова.

Вот копия письма мне нужно экспортировать:

Области интересов: Дать Работа
Типа вакансии: Полная занятость
Campus Расположение: Montgomery
----- ----------------
Контактная информация:

Название: Менеджер
Контакт Фамилия: Wilson
Контакт Имя: Allison
Адрес: 3424 Peachtree Rd NE
Город: Atlanta
Штат: Джорджия
Почтовый индекс: 30326
Телефон: 4042669876
Email: [email protected]
---------------------
Информация о компании:

Название компании: Pe rshing, Yoakley & Associates
Телефон: 4042669876
компании Номер факса: Сайт
Компания:
Тип бизнеса:
------------------- -
Детали работы:

Должность: фельдшер
Дата начала: 1 августа 2016
Тип работы: Полная занятость
Зарплата Диапазон: $ 25 000
Направление Источник:
---------------------
Описание работы:
Специальности практика в Монтгомери , AL ищет помощника врача. Предпочтение отдается
.Кандидаты должны обладать отличными навыками общения и обслуживания клиентов
, а также должны быть самозапускающимися
и многозадачными - помощь лечащему врачу при обследовании и лечении пациента и поддержание клинического оборудования.


Заинтересованные кандидаты должны представить свое резюме по адресу [email protected]
---------------------
Процесс подачи заявки:

------------------ ---
найма процесс:

Телефон Интервью: Да
Проверка данных: Да
Ссылки Проверил: Да
Проверка кредита: Нет
Технических испытаний: Нет
Личности Теста: Нет
Физического экзамена : Нет
вождения записей: Нет
Другое: Нет
---------------------
Запрошенный способ получить резюме:

Факс: Нет
Mail: нет
Электронная почта: Да
Нанести на лицо: нет
Применить онлайн: нет
---------------------
Дополнительные запросы:

Вышеуказанные полужирный области, должны попадать в следующих областях:

Job Title | Company Name | Description | Contact Name | Contact Email | Zip | Salary | Start Date | 

Вот что я до сих пор (со ссылкой на # 's 1-3 выше) ..., который я поместил в ThisOutlookSession Перспективы.

Независимо от того, что не выделено полужирным шрифтом, не следует также переходить в CSV.

Option Explicit 
Private WithEvents Items As Outlook.Items 

Private Sub Application_Startup() 

    Dim olApp As Outlook.Application 
    Dim objNS As Outlook.NameSpace 
    Set olApp = Outlook.Application 
    Set objNS = olApp.GetNamespace("MAPI") 

    '// The INCOMING JOBS folder must be a folder of the INBOX. 

    Set Items = objNS.GetDefaultFolder(olFolderInbox).Folders("Incoming Jobs").Items 

End Sub 
Private Sub Items_ItemAdd(ByVal item As Object) 

    On Error GoTo ErrorHandler 

    Dim Msg As Outlook.MailItem 

    Dim iFile As Integer 

    If TypeName(item) = "MailItem" Then 



     Set Msg = item 

     iFile = FreeFile 
     Open "C:\Temp\INCOMING_JOBS.CSV" For Append As #iFile 

     Print #iFile, Replace(Msg.Body, vbCrLf, ",") 
     Close #iFile 

    End If 

ExitPoint: 

    Exit Sub 

ErrorHandler: 

    MsgBox Err.Number & " - " & Err.Description 
    Resume ExitPoint 

    '// Debug only 
    Resume 

End Sub 
+0

Вы видели [Это] (http://stackoverflow.com/questions/11781320/download-attachment-from-outlook-and-open-in-excel)? –

+0

Я просто посмотрел на него. Но вытащить стандартные объекты Outlook не сложно. Жесткая часть - это вытягивание определенных частей тела электронной почты и размещение их в соответствующих ячейках в CSV. Но, красивый! Благодарю. – webfrogs

ответ

2

Если вы просто сделать это:

Print #iFile, Replace(Msg.Body, vbCrLf, ",") 

, то это будет сохранить все контента в файл.

Что вам нужно сделать, это первый разбить файл на vbCrLf в массив строк:

Dim arr 
arr = Split(Msg.Body, vbCrLf) 

Затем вам нужно петлю над этими линиями, которые ищут конкретные те, которые вы хотите извлечь: это было бы лучше, чтобы поместить это в функцию, вы можете позвонить из основного кода:

UNTESTED:

Function LineContent(arr, txtHeader) as String 
    Dim rv as string, i as long 
    for i=lbound(arr) to ubound(arr) 
     if arr(i) Like txtHeader & "*" then 
      rv = trim(replace(arr(i),txtHeader,"") 
      exit for 
     end if 
    next i 

    LineContent = rv 
End function 

Затем вызовите эту функцию следующим образом:

Dim cLastName as String 
cLastName = LineContent(arr, "Contact Last Name:") 

После того, как у вас есть все необходимые переменные, вы можете добавить их в одну строку в CSV.

Предостережения: ни одно из значений, которые вы хотите извлечь может содержать разрывы строк (которые не могли бы быть проблемой для «должностной»), и если какой-либо из значений может содержать запятую, нужно, чтобы обернуть их в " «прежде чем писать их в CSV.

+0

++ Nice :) 'rv = trim (заменить (arr (i), txtHeader &": "," ")' или 'rv = trim (Split (arr (i),": ") (1)' –

+0

@SiddharthRout - я положил «:» в txtHeader при вызове функции ... –

+0

Да, я видел это: D. –

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