Member 13871278 Ответов: 1

Как экспортировать несколько таблиц из электронной почты outlook в excel (один и тот же лист)


Здравствуйте друзья,

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

Электронные письма, для которых я хочу автоматизировать это, форматируются как две(или более) отдельные таблицы. Я хочу иметь возможность использовать этот скрипт для писем с одной и той же темой, но у меня есть разное количество строк для разных тем в файлах .msg. Некоторые письма имеют 1 Таблица из 10 строк х 2 colomns, а некоторые могут иметь 3 таблицы 2 строки X 2 colomns. Количество колонн не превышает 2.

Я хотел бы, чтобы скрипт позволял мне выбирать, из каких писем я хотел бы извлечь данные, и создавать новую книгу Excel. Пример: я выбираю 15 электронных писем и нажимаю кнопку макроса, и лист Excel получает строку заголовка с именами атрибутов на A1, B1...., а затем заполняет строки ниже значениями атрибутов.

Я постараюсь показать вам, как это выглядит, когда я получу письмо здесь:


_____________________________________________
Инфо
______________________________________________
Телефон: 9434343

Обратная связь: пачка

тема Вито

электронной почты crm@crm.com
______________________________________________
пользовательская информация
______________________________________________
браузер Firefox

ClientIP 00.00.0.0

Сайт CRM




Итак, мой идеальный лист в Excel теперь будет выглядеть так:
Phonenr | обратная связь | тема | mailto | браузер | ClientIP | сайт |
______________________________________________________________________________
9434343 пачка Вито crm@crm.com FIREFOX 00.00.0.0 CRM

Значения следующего сообщения электронной почты должны быть добавлены ниже (строка 3 в данном примере). Пожалуйста, отметьте, что меня не волнуют имена таблиц, когда они появляются в электронном письме. В этом примере "информация" и "информация о пользователе" удаляются, удаляются, удаляются! :)

Что я уже пробовал:

ТАК МНОГО!!!
Но именно сюда Google привел меня после двух недель раскопок. Этот codesnippet разделяется на разные листы и не имеет возможности форматирования в заголовок и строки. (Из-за политики работы я не могу загрузить готовую надстройку для этого(и да, я знаю, что она существует: (), так как весь код должен быть сырым и может быть обработан другими, кроме меня)

Sub ExportTablesinEmailtoExcel()
    Dim objMail As Outlook.MailItem
    Dim objWordDocument As Word.document
    Dim objTable As Word.Table
    Dim lTableCount As Long
    Dim objExcelApp As Excel.Application
    Dim objExcelWorkbook As Excel.Workbook
    Dim objExcelWorksheet As Excel.Worksheet
    Dim i As Long
 
    'Create a new excel workbook
    Set objExcelApp = CreateObject("Excel.Application")
    Set objExcelWorkbook = objExcelApp.Workbooks.Add
    objExcelApp.Visible = True
 
    'Get the table(s) in the selected email
    Set objMail = Outlook.Application.ActiveExplorer.Selection.Item(1)
    Set objWordDocument = objMail.GetInspector.WordEditor
    lTableCount = objWordDocument.Tables.Count
 
 
    If lTableCount > 1 Then
       'If there is more than one table
       'Copy each table into separate worksheet
       For i = 1 To lTableCount
           Set objTable = objWordDocument.Tables(i)
           objTable.Range.Copy
 
           Set objExcelWorksheet = objExcelWorkbook.Sheets(i)
           objExcelWorksheet.Paste
           objExcelWorksheet.Columns.AutoFit
       Next
    Else
      'If there is only one table
      'Just copy it into the first worksheet
      Set objTable = objWordDocument.Tables(1)
      objTable.Range.Copy
 
      Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
      objExcelWorksheet.Paste
      objExcelWorksheet.Columns.AutoFit
    End If
End Sub

1 Ответов

Рейтинг:
1

Gerry Schmitz

Как только вы прочитаете "таблицу", вам нужно будет "извлечь" и переформатировать содержимое в строку для вывода.

(то есть ваши текущие "таблицы" не находятся в том же "макете", что и планируемый результат).

c# - разбор таблицы с помощью Microsoft.Офис.Взаимодействие.Слово, получить только текст из первой колонки? - переполнение стека[^]

(Конечно, вы можете сделать это для "нескольких" столбцов).