Нашел очень много кода про то, как отослать письмо из Экселя используя gmail аккаунт и ничего по поводу чтения писем из gmail. Попадаются только варианты с установкой каких-то exe файлов. Я бы читал gmail письма через Outlook, но он, к сожалению, для меня не доступен.
Может кто-то сталкивался с проблемой и знает решение?
И еще вопрос. Если чтение все-таки не возможно реализовать с помощью VBA, то если написать самому exe на C#, то как реализовать передачу данных из exe в Excel?
Ну, т.е. я должен написать на C# экзэшник, который будет получать данные от gmail. Я экзешник буду запускать из эксель, и это экзешник будет вставлять в лист эксель данные, добытые с gmail. А далее я буду эти данные обрабатывать в эксель.
Огромное спасибо за наводку. Я то сам не программист, знаю основы VBA и C# на уровне "могу написать хелоу уорлд".
Т.е. я создаю этот экстеншн написанный на C# и добавляю его в эксель, а потом пользуюсь напрямую из Экселя. (такого я еще точно не делал, блин)
А все было бы ТАААК просто с Аутлук, но ... нету его
Код
Sub GetMessages()
Dim objNS As Object
Dim objOL As Object
Dim i As Long
Set objOL = CreateObject("Outlook.Application")
Set objNS = objOL.GetNamespace("MAPI")
With objNS.Folders("hhhh@gmail.com").Folders("Âõîäÿùèå")
For i = 1 To .Items.Count
'Cells(i, 14).Value = .Items(i).Subject
If .Items(i).Subject = "To do" Then 'заглавие искомого сообщения
MsgBox ("Email with " & .Items(i).Subject & " has been sent")
End If
'Cells(i, 15).Value = .Items(i).Body
Next
End With
Set objNS = Nothing
Set objOL = Nothing
End Sub
Если не привязываться к Excel, то можно посмотреть в сторону Google API в их фирменном приложении Google Sheets. На stackoverflow есть несколько тем. Если бы было больше вводных, написал бы простенький скриптик на Google apps script.
Все_просто написал: Если бы было больше вводных, написал бы простенький скриптик на Google apps script.
Огромное спасибо за предложение, но у меня на работе только эксель. Дома могу себе еще поставить VS и что-то там попытаться сотворить, но на работе даже Аутлук низзззяяяя. Просто в компании, где я работаю, криворукий IT департамент. Есть стороннее купленное приложение, которое формирует документ и отправляет его, используя gmail, другим работникам компании. Отправить сообщение ОЧЕНЬ важно. Но сторонyее купленное приложение ИНОГДА не отправляет сообщение (я так понял, программеры не стали себя утруждать и не написали код, который бы проверял - отправилось сообщение или нет). Вместо того, чтобы дать подзатыльник программерам, наше руководство сказало "проверяйте отправленную почту КАЖДЫЙ раз, когда отправляете сообщение". Делать мне больше нечего... Я предложил проверять отправку из Экселя с помощью Аутлук. Ну вот теперь мне Аутлуком пользоваться нельзя ))))))) (это вопрос политический) Есть только эксель...
Стороннее приложение всегда вставляет в Subject письма для gmail номер документа. Его я знаю. Например, docNumber="HM123123". Мне надо получить от gmail только Subject и только последних двух-трех отосланных сообщений. Ну а потом я бы сделал что-то вроде
if Instr(1,emailSubject, docNumber)=False then msgbox("Ваше сообщение не было отправлено, пожалуйста повторите попытку")