Добрый день. Есть необходимость отправить любое уведомление(почта, смс в общем любое) при изминении ячейки в XL. Есть всегда открытый файл XL на компьютере, время от времени меняется ячейка с 1 на 0, необходимо какое то оповещение как появляется 1. Просьба помочь, очень мало что понимаю в этом. Спасибо!
Добрый день. Есть необходимость отправить любое уведомление(почта, смс в общем любое) при изминении ячейки в XL. Есть всегда открытый файл XL на компьютере, время от времени меняется ячейка с 1 на 0, необходимо какое то оповещение как появляется 1. Просьба помочь, очень мало что понимаю в этом. Спасибо!roymaklur
Для начала без зависимостей (которые пишите самостоятельно, тут форум по MS Office, а не по Сям) отправляться будет только письмо по Аутлуку. А для конца без макроса тут не обойтись. Хорошая новость в том, что такой примерно код у меня уже есть.
Для начала без зависимостей (которые пишите самостоятельно, тут форум по MS Office, а не по Сям) отправляться будет только письмо по Аутлуку. А для конца без макроса тут не обойтись. Хорошая новость в том, что такой примерно код у меня уже есть.StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Outlook.Application Dim OutMail As Outlook.MailItem
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(olMailItem) With OutMail .To = "adress@example.com" 'Адрес, на который идёт письмо .Subject = "Изменение в книге" 'Тема письма .Attachments.Add ThisWorkbook.FullName 'Если нужно, можно вложить сам файл .Body = "В ячейке А1 листа " & ActiveSheet.Name & " книги " & ThisWorkbook.Name & " теперь 1" .Send End With End If
End Sub
[/vba] В модуль листа, на котором ловим изменение. Ячейку ставите какую нужно, разумеется, А1 просто для примера.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Outlook.Application Dim OutMail As Outlook.MailItem
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(olMailItem) With OutMail .To = "adress@example.com" 'Адрес, на который идёт письмо .Subject = "Изменение в книге" 'Тема письма .Attachments.Add ThisWorkbook.FullName 'Если нужно, можно вложить сам файл .Body = "В ячейке А1 листа " & ActiveSheet.Name & " книги " & ThisWorkbook.Name & " теперь 1" .Send End With End If
End Sub
[/vba] В модуль листа, на котором ловим изменение. Ячейку ставите какую нужно, разумеется, А1 просто для примера.StoTisteg
Интуитивно понятный код - это когда интуитивно понятно, что это код.
Пока дошел вот до этой ошибки, что то не верно поставил? Сам макрос на листе 3. На листе 1 фото ошибок. Что то не понял как картинку вставить)
Пока дошел вот до этой ошибки, что то не верно поставил? Сам макрос на листе 3. На листе 1 фото ошибок. Что то не понял как картинку вставить)roymaklur
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(olMailItem) .To = "adress@example.com" 'Адрес, на который идёт письмо .Subject = "Изменение в книге" 'Тема письма .Attachments.Add ThisWorkbook.FullName 'Если нужно, можно вложить сам файл .Body = "В ячейке А1 листа " & ActiveSheet.Name & " книги " & ThisWorkbook.Name & " теперь 1" .Send End With End If
End Sub
[/vba]
Или без лишних телодвижений: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(olMailItem) .To = "adress@example.com" 'Адрес, на который идёт письмо .Subject = "Изменение в книге" 'Тема письма .Attachments.Add ThisWorkbook.FullName 'Если нужно, можно вложить сам файл .Body = "В ячейке А1 листа " & ActiveSheet.Name & " книги " & ThisWorkbook.Name & " теперь 1" .Send End With End If
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(olMailItem) .To = "andry82@list.ru" .Subject = "Èçìåíåíèå â êíèãå" .Attachments.Add ThisWorkbook.FullName .Body = " ÿ÷åéêå G6 ëèñòà " & ActiveSheet.Name & " êíèãè " & ThisWorkbook.Name & " òåïåðü 1" .Send End With End If
End Sub
[/vba] т.е. я вставил сою почту и номер ячейки где появляется 1. Больше точно ничего не надо менять? Сейчас ошибка пропала, но ничего не происходит. Аутлук включен.
Смотри у меня получился вот такой текст: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(olMailItem) .To = "andry82@list.ru" .Subject = "Èçìåíåíèå â êíèãå" .Attachments.Add ThisWorkbook.FullName .Body = " ÿ÷åéêå G6 ëèñòà " & ActiveSheet.Name & " êíèãè " & ThisWorkbook.Name & " òåïåðü 1" .Send End With End If
End Sub
[/vba] т.е. я вставил сою почту и номер ячейки где появляется 1. Больше точно ничего не надо менять? Сейчас ошибка пропала, но ничего не происходит. Аутлук включен.roymaklur
Сообщение отредактировал roymaklur - Четверг, 26.04.2018, 07:31
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(olMailItem) .To = "andry82@list.ru" .Subject = "Изменение в книге" .Attachments.Add ThisWorkbook.FullName .Body = "В ячейке G6 листа " & ActiveSheet.Name & " книги " & ThisWorkbook.Name & " теперь 1" .Send End With End If
End Sub
[/vba]
что то коряво вставилось, вот : [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim OutApp As Object
If Target Is Cells(1, 1) And Target.Value = 1 Then Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(olMailItem) .To = "andry82@list.ru" .Subject = "Изменение в книге" .Attachments.Add ThisWorkbook.FullName .Body = "В ячейке G6 листа " & ActiveSheet.Name & " книги " & ThisWorkbook.Name & " теперь 1" .Send End With End If
roymaklur, Исправьте 4 своих сообщения выше согласно Правил форума (п.3 относительно тегов). До исправления все ответы будут удаляться администрацией
roymaklur, Исправьте 4 своих сообщения выше согласно Правил форума (п.3 относительно тегов). До исправления все ответы будут удаляться администрацией_Boroda_