Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Получение данных из Outlook в Excel. Открытие писем и ответ всем
 
Добрый день, уважаемые форумчане!
Прошу помочь с доработкой кода (возможно будет иное решение).
Необходимо получить данные из Outlook, которые будут занесены в Excel.
На основании темы и даты в подпапке "Контроль" папки "Отправленные" будет найдено соответствующее письмо в папке "Контроль" Outlook.
В третьем столбце можно выбрать возможность открытия письма, в четвертом - открытия и ответа всем адресатам.
Сейчас при нажатии на ссылку не открывает письма в Outlook, а выдает запрос такого рода:
"Вам понадобится новое приложение, чтобы открыть этот outlook. Поиск приложения в Microsoft Store. Всегда использовать это приложение (с галочкой)"

Есть код по ссылке, который прекрасно работает и сообщения по вводимой в окно InputBox теме сразу открываются в режиме ответа всем
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=93298&am...

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


Сам код:
Код
Sub ПолучитьДанныеОтправленныеПисьма()

    Dim olApp As Outlook.Application
    Dim olNs As Outlook.Namespace
    Dim olFolder As Outlook.MAPIFolder
    Dim olMail As Outlook.MailItem
    Dim xlWorksheet As Excel.Worksheet
    Dim iRow As Integer

    'Создать объект приложения Outlook
    Set olApp = New Outlook.Application

    'Создать объект пространства имен
    Set olNs = olApp.GetNamespace("MAPI")

    'Получить папку "Отправленные" в текущем ящике
    Set olFolder = olNs.GetDefaultFolder(olFolderSentMail).Folders("Контроль")

    'Установить активный лист в книге Excel
    Set xlWorksheet = ActiveWorkbook.ActiveSheet

    'Пройти по каждому письму в папке "Отправленные"
    For Each olMail In olFolder.Items
        'Проверить, является ли письмо объектом MailItem и было ли оно отправлено
        If TypeOf olMail Is Outlook.MailItem And olMail.Sent Then
            'Добавить данные в лист Excel
            iRow = xlWorksheet.Cells(xlWorksheet.Rows.Count, 1).End(xlUp).row + 1
            xlWorksheet.Cells(iRow, 1).Value = olMail.Subject
            xlWorksheet.Cells(iRow, 2).Value = olMail.SentOn
            xlWorksheet.Hyperlinks.Add Anchor:=xlWorksheet.Cells(iRow, 3), Address:="outlook:/" & olMail.EntryID, ScreenTip:="Открыть письмо", TextToDisplay:="Открыть письмо"
            xlWorksheet.Hyperlinks.Add Anchor:=xlWorksheet.Cells(iRow, 4), Address:="outlook:/" & olMail.EntryID & "/action=replyall", TextToDisplay:="Ответить всем с вложениями"

        End If

    Next olMail

    'Сохранить и закрыть книгу Excel
    'ActiveWorkbook.Save
    'ActiveWorkbook.Close

    'Освободить объекты из памяти
    Set olMail = Nothing
    Set olFolder = Nothing
    Set olNs = Nothing
    Set olApp = Nothing
    Set xlWorksheet = Nothing

End Sub

Изменено: Алексей Иванов - 25.08.2023 09:17:08
Изменить символы на русский язык или восстановить .log файлы для Excel
 
Добрый день!
Прошу помочь с восстановлением файлов .log, вчера удалил без возможности восстановления через команду "Выполнить"-> "%TEMP%" файл .log, теперь указаны в панели меню символы вместо русского языка, знаки вопроса на боковой панели, см. скрин.
Как исправить ситуацию? Переустановка (дважды) MS Office ситуацию не спасла.
Подсчет предыдущих значений в функции на основе двух условий и передача в макрос для обработки
 
Добрый день, уважаемые форумчане!
Прошу помочь разобраться с ошибкой в подсчете предыдущих значений во второй функции.
Макрос направлен на выявление похожих значений по двум условиям и выведении количества предыдущих значений в столбцы 4 и 5.
Ошибка заключается в том, что вторая функция подсчитывает все предыдущие значения, не учитывая одно из условий.
Скажем, если при сравнении столбцов №2 и №3 обоих вкладок в определённых строках значения сходятся, то далее идет подсчет предыдущих "цифровых" значений в столбце. Вторая функция считает все предыдущие значения на вкладке "Вторая", а нужно, чтобы она учитывала также "буквенное" значение второго столбца. Сейчас получается, что она считает всё без учета данного условия, хотя данное условие прописано.
Где может быть ошибка?
Код
Public Q As Integer
Public W As Integer
Public P As Integer
Option Explicit
 
 
 
Sub Подсчет_предыдущих_значений_проба()
 
Dim ArA3, ArB3, ArA4, ArB4
Dim T As Long, W As Long, LastRow3 As Long, LastRow4 As Long
Worksheets("Первая").Select
With Worksheets("Вторая")
  LastRow3 = Cells(Rows.Count, 1).End(xlUp).Row
  ArA3 = Range("B1:B" & LastRow3)
  ArB3 = Range("C1:C" & LastRow3)
  LastRow4 = .Cells(Rows.Count, 2).End(xlUp).Row
  ArA4 = .Range("B1:B" & LastRow4)
  ArB4 = .Range("C1:C" & LastRow4)
  For Q = 2 To LastRow3
    For W = 2 To LastRow4
      P = W
      If ArA3(Q, 1) = ArA4(W, 1) Then
        If ArB3(Q, 1) = ArB4(W, 1) Then
                If PredyduschieZnachenia_проба1 <= PredyduschieZnachenia_проба2 Then
                    Cells(Q, 4) = PredyduschieZnachenia_проба1
                    Cells(Q, 5) = PredyduschieZnachenia_проба2
                    Else: Cells(Q, 6) = "Err"
                End If
            Exit For
        End If
      End If
    Next W
 Next Q
End With
 
 
End Sub
 
 
Function PredyduschieZnachenia_проба1()
 
Dim Rg As Range
Dim RgVal As Integer
Dim a As Variant
Dim i As Integer
Dim cell As Range
Dim Schet As Double
W = P
a = Worksheets("Первая").Cells(Q, 3)
Set Rg = Range(Cells(2, 3), Cells(Q, 3))
RgVal = Rg.Count
 
Dim myColl As Object
Set myColl = New Collection
On Error Resume Next
For Each cell In Rg
    If cell = a Then myColl.Add cell.Value
Next
 
Schet = myColl.Count
PredyduschieZnachenia_проба1 = Schet
Set myColl = New Collection
End Function
 
 
Function PredyduschieZnachenia_проба2()
 
Dim RgW2 As Range
Dim RgVal As Integer
Dim a As Variant
Dim i As Integer
Dim cell As Range
Dim Schet As Double
a = Worksheets("Вторая").Cells(W, 3)
With Worksheets("Вторая")
Set RgW2 = Range(.Cells(2, 3), .Cells(W, 3))
End With
RgVal = RgW2.Count
 
Dim myColl As Object
Set myColl = New Collection
On Error Resume Next
For Each cell In RgW2
    If cell = a And Worksheets("Вторая").Cells(W, 2) = _
    Worksheets("Первая").Cells(Q, 2) Then myColl.Add cell.Value
Next
 
Schet = myColl.Count
PredyduschieZnachenia_проба2 = Schet
Set myColl = New Collection
End Function
Страницы: 1
Loading...