Вопрос или проблема
Я ищу способ сделать две вещи в Outlook/Excel.
-
Получить количество писем в каждой категории по цвету. (цвет соответствует тому, кто ответил на письмо.)
-
В каждой категории/персоне я хочу знать, сколько ответов на электронные письма было отправлено в каждый день.
Я не очень хорошо разбираюсь в VBA, но, возможно, я смогу разобраться, если у меня будут пошаговые инструкции.
Спасибо!
Не очень хорошо знаю Excel и VBA. Но с точки зрения клиента Outlook, мы можем получить эту информацию, изменив настройки просмотра.
Вы можете изменить свой вид Outlook на “один” или “предварительный просмотр” и установить сортировку по категориям.
И получить количество, как показано ниже.
Если необходимо, вы также можете добавить фильтры, чтобы отфильтровать нужные сообщения электронной почты.
Я заметил, что при этом сбрасывается ваш вид. После того как я поэкспериментировал с сброшенным видом, я обнаружил, что он зависит от ширины панели входящих сообщений (панели содержимого папки). Судя по всему, количество писем отображается только тогда, когда центральная панель достаточно широка. Я смог сделать так, чтобы количество писем появлялось и исчезало, просто сужая или расширяя центральную панель.
Ответ или решение
Как получить количество электронных писем в Outlook, отсортированных по категории и дате ответа
Для решения вашей задачи по подсчету количества электронных писем в Outlook в зависимости от цветовой категории и по дате ответа, мы рассмотрим несколько шагов, включая использование встроенных возможностей Outlook и применения VBA для автоматизации.
Шаг 1: Настройка представления в Outlook
-
Откройте Outlook: Запустите приложение и перейдите в папку "Входящие" или в ту папку, где хранятся нужные вам сообщения.
-
Изменение представления:
- В верхней панели выберите вкладку "Вид".
- Нажмите на "Изменить представление", затем выберите "Список".
- Убедитесь, что у вас включены необходимые столбцы, такие как "Категория" и "Дата ответа". Для этого выберите "Настроить текущий вид" и добавьте нужные столбцы.
-
Сортировка по категориям:
- В настройках представления выберите "Сортировка", затем укажите "Категория" в качестве первого параметра сортировки.
- В случае необходимости также добавьте "Дата ответа" в качестве дополнительного параметра.
-
Проверка ширины центральной панели: Обратите внимание, что количество писем может отображаться только при достаточной ширине центральной панели. Попробуйте настроить ширину, чтобы видеть все подсказки в представлении.
Шаг 2: Фильтрация писем
Если вам нужно получить определенные сообщения, можно применить фильтры:
- Выберите "Фильтр" в настройках представления и установите условия, соответствующие вашим требованиям (например, по дате или определенной категории).
Шаг 3: Использование VBA для автоматизации подсчета писем
Так как вы упомянули, что не слишком proficient в VBA, предоставлю пошаговую инструкцию по созданию макроса, который поможет вам автоматизировать процесс.
-
Открытие редактора VBA:
- Нажмите
Alt + F11
, чтобы открыть редактор VBA. - В левой части окна выберите "Project1" (или название вашего проекта), затем щелкните правой кнопкой мыши и выберите "Insert" > "Module".
- Нажмите
-
Копирование кода:
Вставьте следующий код в открывшееся окно модуля:Sub CountEmailsByCategoryAndDate() Dim Inbox As Folder Dim Item As Object Dim catCounts As Object Dim dateCounts As Object Dim responseDate As Date Dim category As String Set Inbox = Application.Session.GetDefaultFolder(olFolderInbox) Set catCounts = CreateObject("Scripting.Dictionary") Set dateCounts = CreateObject("Scripting.Dictionary") For Each Item In Inbox.Items If TypeOf Item Is MailItem Then category = Item.Categories responseDate = Item.LastModificationTime 'или Item.ReceivedTime If Not catCounts.Exists(category) Then catCounts.Add category, 1 Else catCounts(category) = catCounts(category) + 1 End If Dim dateKey As String dateKey = Format(responseDate, "yyyy-mm-dd") If Not dateCounts.Exists(category & "_" & dateKey) Then dateCounts.Add category & "_" & dateKey, 1 Else dateCounts(category & "_" & dateKey) = dateCounts(category & "_" & dateKey) + 1 End If End If Next Item ' Создание нового рабочего листа в Excel Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True Dim wb As Object Set wb = xlApp.Workbooks.Add Dim ws As Object Set ws = wb.Sheets(1) ' Запись данных в Excel Dim r As Integer r = 1 ws.Cells(r, 1).Value = "Категория" ws.Cells(r, 2).Value = "Количество" r = r + 1 Dim key As Variant For Each key In catCounts.Keys ws.Cells(r, 1).Value = key ws.Cells(r, 2).Value = catCounts(key) r = r + 1 Next key ws.Cells(r, 1).Value = "Категория_Дата" ws.Cells(r, 2).Value = "Количество" r = r + 1 For Each key In dateCounts.Keys ws.Cells(r, 1).Value = key ws.Cells(r, 2).Value = dateCounts(key) r = r + 1 Next key End Sub
-
Запуск макроса: Вернитесь в Outlook, нажмите
Alt + F8
, выберите созданный макросCountEmailsByCategoryAndDate
и нажмите "Запустить".
Итог
Следуя этим шагам, вы сможете получить нужную информацию о количестве писем, отсортированных по категориям, а также получение информации по датам ответов. Не стесняйтесь адаптировать данные шаги и скрипты под свои конкретные требования. Удачи в вашей работе с Outlook и Excel!