Пробую вот этот код, но там какие то методы классы выбраны не те ж-(
Как правильно заменить закоммиченные строки, что бы скрипт подхватил емейлы из этих полей?
[vba]
Код
Private Sub Test() Dim objOutlook As Object, objNamespace As Object, iRow&, iCount& iRow = Cells(Rows.Count, "A").End(xlUp).Row iCount = Application.Max(Range("A:A")) Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNamespace("MAPI")
Application.ScreenUpdating = False CreateArchive objNamespace.GetDefaultFolder(6), iRow, iCount '6=olFolderInbox CreateArchive objNamespace.GetDefaultFolder(5), iRow, iCount '5=olFolderSentMail objOutlook.Quit Application.ScreenUpdating = True End Sub
Private Sub CreateArchive(objFolder As Object, iRow&, iCount&) 'On Error Resume Next Dim objMail As Object, IdMail$ For Each objMail In objFolder.Items IdMail = objMail.EntryID If Application.CountIf(Range("I:I"), IdMail) = 0 Then iRow = iRow + 1: iCount = iCount + 1 Cells(iRow, "A") = iCount Cells(iRow, "B") = objMail.SenderName '(тут выпадает почему то по ошибке в конце работы) Cells(iRow, "C") = objMail.SenderEmailAddress Cells(iRow, "D") = objFolder.Name Cells(iRow, "E") = objMail.CreationTime Cells(iRow, "F") = objMail.Subject Cells(iRow, "G") = "'" & IdMail 'IdMail 'Cells(iRow, "E") = objMail.To 'Cells(iRow, "F") = objMail.CC 'Cells(iRow, "I") = Left(objMail.Body, 1067) 'Если тут поставить максимальное значение падает по переполнению памяти... по идее просто выводит текс заданной длины в ячейку
End If Next End Sub
[/vba]
Но эти строчки не работают 'Cells(iRow, "E") = objMail.To 'Cells(iRow, "F") = objMail.CC
вылетает ошибка, не знаю на что их надо заменить, что бы заработало
Пробую вот этот код, но там какие то методы классы выбраны не те ж-(
Как правильно заменить закоммиченные строки, что бы скрипт подхватил емейлы из этих полей?
[vba]
Код
Private Sub Test() Dim objOutlook As Object, objNamespace As Object, iRow&, iCount& iRow = Cells(Rows.Count, "A").End(xlUp).Row iCount = Application.Max(Range("A:A")) Set objOutlook = CreateObject("Outlook.Application") Set objNamespace = objOutlook.GetNamespace("MAPI")
Application.ScreenUpdating = False CreateArchive objNamespace.GetDefaultFolder(6), iRow, iCount '6=olFolderInbox CreateArchive objNamespace.GetDefaultFolder(5), iRow, iCount '5=olFolderSentMail objOutlook.Quit Application.ScreenUpdating = True End Sub
Private Sub CreateArchive(objFolder As Object, iRow&, iCount&) 'On Error Resume Next Dim objMail As Object, IdMail$ For Each objMail In objFolder.Items IdMail = objMail.EntryID If Application.CountIf(Range("I:I"), IdMail) = 0 Then iRow = iRow + 1: iCount = iCount + 1 Cells(iRow, "A") = iCount Cells(iRow, "B") = objMail.SenderName '(тут выпадает почему то по ошибке в конце работы) Cells(iRow, "C") = objMail.SenderEmailAddress Cells(iRow, "D") = objFolder.Name Cells(iRow, "E") = objMail.CreationTime Cells(iRow, "F") = objMail.Subject Cells(iRow, "G") = "'" & IdMail 'IdMail 'Cells(iRow, "E") = objMail.To 'Cells(iRow, "F") = objMail.CC 'Cells(iRow, "I") = Left(objMail.Body, 1067) 'Если тут поставить максимальное значение падает по переполнению памяти... по идее просто выводит текс заданной длины в ячейку
End If Next End Sub
[/vba]
Но эти строчки не работают 'Cells(iRow, "E") = objMail.To 'Cells(iRow, "F") = objMail.CC
вылетает ошибка, не знаю на что их надо заменить, что бы заработало
где-то вставляются емейлы, а где то имена, почемуто имя и емейл не вставляются... как это можно поправить? Видимо еще какой то параметр или строчку кода надо добавить?
Я думал должно быть Иванов Иван Иваныч ivanov@mail.ru , Петров Петр Петровичч Petrov@mail.ru и так дале.. Но почему то у кого то почта, а у кого то имя полное без почты.... ;-(( у вас так же?
где-то вставляются емейлы, а где то имена, почемуто имя и емейл не вставляются... как это можно поправить? Видимо еще какой то параметр или строчку кода надо добавить?
Я думал должно быть Иванов Иван Иваныч ivanov@mail.ru , Петров Петр Петровичч Petrov@mail.ru и так дале.. Но почему то у кого то почта, а у кого то имя полное без почты.... ;-(( у вас так же?Laa911
Сообщение отредактировал Laa911 - Среда, 03.04.2019, 18:07
Laa911, Форум - это не решалка любых проблем и не автомакрописалка. Если вам нужно готовое решение то Вам в платную ветку или ждать когда кому-то будет интересно слепить скрипт для вас. Мне это не интересно ни с одной из сторон, советы дал. последний так как в поле TO и СС может находится несколько ресипиентов, то сранивать имя напрямую некорректно [vba]
Код
For Each rcpt In objMail.Recipients If objMail.CC = rcpt.Name Then Debug.Print rcpt.Address Next
[/vba]
[vba]
Код
For Each rcpt In objMail.Recipients If objMail.CC LIKE "*" & rcpt.Name & "*" Then Debug.Print rcpt.Address Next
[/vba] но в этом случае могут быть ошибки при совпадении имен или [vba]
Код
arrRcpt = Split(objMail.CC, ";") For i = 0 To UBound(arrRcpt) For Each rcpt In objMail.Recipients If arrRcpt(i) = rcpt.Name Then Debug.Print rcpt.Address Next Next
[/vba]
Laa911, Форум - это не решалка любых проблем и не автомакрописалка. Если вам нужно готовое решение то Вам в платную ветку или ждать когда кому-то будет интересно слепить скрипт для вас. Мне это не интересно ни с одной из сторон, советы дал. последний так как в поле TO и СС может находится несколько ресипиентов, то сранивать имя напрямую некорректно [vba]
Код
For Each rcpt In objMail.Recipients If objMail.CC = rcpt.Name Then Debug.Print rcpt.Address Next
[/vba]
[vba]
Код
For Each rcpt In objMail.Recipients If objMail.CC LIKE "*" & rcpt.Name & "*" Then Debug.Print rcpt.Address Next
[/vba] но в этом случае могут быть ошибки при совпадении имен или [vba]
Код
arrRcpt = Split(objMail.CC, ";") For i = 0 To UBound(arrRcpt) For Each rcpt In objMail.Recipients If arrRcpt(i) = rcpt.Name Then Debug.Print rcpt.Address Next Next
Спасибо а куда его или вместо чего его надо вставлять? И спасибо, что помогаете! Прямо огромное спасибо! Осталось как я понимаю еще чуть чуть, и будешь полноценный скрипт!
Спасибо а куда его или вместо чего его надо вставлять? И спасибо, что помогаете! Прямо огромное спасибо! Осталось как я понимаю еще чуть чуть, и будешь полноценный скрипт!Laa911
но в этом случае могут быть ошибки при совпадении имен или arrRcpt = Split(objMail.CC, ";") For i = 0 To UBound(arrRcpt) For Each rcpt In objMail.Recipients If arrRcpt(i) = rcpt.Name Then Debug.Print rcpt.Address Next Next
А можете правильно добавить этот кусок когда в общий код, что бы он заработал? не все понимают, как работают все эти непонятные обычным людям буквицы, но многие из нас скажут Вам огромное спасибо!
Очень надеюсь, что сможете найти пару минут, что бы завершить этот прекрасный макрос... Заранее огромное спасибо!
но в этом случае могут быть ошибки при совпадении имен или arrRcpt = Split(objMail.CC, ";") For i = 0 To UBound(arrRcpt) For Each rcpt In objMail.Recipients If arrRcpt(i) = rcpt.Name Then Debug.Print rcpt.Address Next Next
А можете правильно добавить этот кусок когда в общий код, что бы он заработал? не все понимают, как работают все эти непонятные обычным людям буквицы, но многие из нас скажут Вам огромное спасибо!
Очень надеюсь, что сможете найти пару минут, что бы завершить этот прекрасный макрос... Заранее огромное спасибо!Laa911
Сообщение отредактировал Laa911 - Вторник, 09.04.2019, 10:46
При использовании данного макроса выгружаются письма только из основного, как седлать чтобы выгружались с определенного ящика например name2@mail.ru . Также пока не понял как выгружать только новые письма.
При использовании данного макроса выгружаются письма только из основного, как седлать чтобы выгружались с определенного ящика например name2@mail.ru . Также пока не понял как выгружать только новые письма.