2014-09-15 6 views
0

У меня есть папка с электронными письмами, которые являются специальным классом сообщений (iXOS-архив, связанный с OpenText Enterprise Archive). Каждое электронное письмо имеет собственное свойство метаданных, видимое в Outlook, называемое «Document Identifier». Я пытаюсь извлечь это из писем, используя скрипт VBA. Я нашел скрипт, который извлекает общие метаданные (To, From, Subject и т. Д.) Из электронных писем и записывает их в Excel. Это хорошо работает.Извлечь метаданные электронной почты с помощью скрипта VBA

http://spreadsheetpage.com/index.php/tip/getting_a_list_of_file_names_using_vba/

Я пытался отладки сценария и заглянув в свойства электронной почты, но я не могу найти любую коллекцию, содержащую пользовательские метаданные.

Кто-нибудь знает, как я могу получить доступ к пользовательским метаданным через скрипт VBA?

ответ

2

Вы, вероятно, не быть в состоянии сделать это, используя FileSystemObject или DIR функцию (как в коде, вы связаны, выше).

Я не могу проверить без подходящего примера, но это может работать:

  1. Bind Перспективы для Excel
  2. Открыть файл MSG в Outlook,
  3. Использование объектной модели Outlook, чтобы просмотреть ГЗС файла .ItemProperties

Практически вы будете установить это в цикле, аналогично ваш пример кода, но для тестирования, попробовать его на один файл и посмотреть, если это поможет вам.

'Requires reference to Outlook object model 
Sub foo() 
Dim olApp As Outlook.Application 
Dim msg As Outlook.MailItem 
Dim properties As Outlook.ItemProperties 
Dim p As Long 

Set olApp = GetObject(, "Outlook.Application") 
Set msg = olApp.CreateItemFromTemplate("C:\your filename.msg") 

Set properties = msg.ItemProperties 

For p = 0 To properties.Count - 1 
    Debug.Print properties(p).Name 

Next 

Set msg = Nothing 
Set olApp = Nothing 

End Sub 

Это должен напечатать список ItemProperties в открывшемся окне, прокрутить этот список и проверьте, чтобы увидеть, если один вы ищете - «Идентификатор документа» - включен. Если это так, тогда это должно работать, и вы можете изменять по мере необходимости, чтобы делать то, что вы хотите делать с этой информацией.

Я не могу оказать дополнительной помощи, если вы не можете предоставить тестовую версию этого электронного формата.

Cheers.

+0

Это печатает ItemProperties, но не включает настраиваемое свойство, которое я ищу. Есть ли другие коллекции, содержащие пользовательские свойства, о которых вы знаете? Можно ли здесь связать класс пользовательских сообщений? Я также заметил, что при отладке и анализе свойств сообщения (msg-переменная в вашем коде) письмо было вставлено в почтовый ящик Outlook. Отсюда я мог увидеть свойство «Идентификатор документа», настроив представление для его отображения. Это здорово, но у меня есть 20 000 писем, поэтому я не могу это сделать по одному! – Jonny

+0

Обратитесь к моему последнему комментарию в ответе: я не могу помочь дальше, если не вижу электронного письма в этом формате. Я, как и многие разработчики vba, не сразу * знаю все ответы. Но я хорошо разбираюсь и разбираюсь в том, как их решать в принципе и просматривая ссылку на объектную модель. Зацикливание 20 000 файлов должно быть тривиальной настройкой для этого кода с помощью инструкции Do/Loop. Дайте мне знать, если я могу помочь :) –