Добавление значений ячеек в электронное письмо при их изменении Excel

В настоящее время я работаю над небольшой «базой данных» Excel, где ячейки в одном из столбцов могут редактировать несколько человек. Ячейки, которые можно редактировать, находятся в раскрывающемся меню. Как только человек изменяет одну или несколько ячеек, я хотел бы, чтобы некоторые данные из соответствующих строк были добавлены в электронное письмо. Наконец, фиксированная ячейка заполняется инициалами человека, редактирующего базу данных, в результате чего отправляется электронное письмо.

Бывший. Мои столбцы A, B и C: Имя, Профессия, Положение дел и, скажем, у меня 10 строк. Затем ячейка Положение дел в строках 2 и 7 изменяется с помощью раскрывающегося списка с «Работает» на «В отпуске». Я добавляю свои инициалы в фиксированную ячейку (например, D1), и создается электронное письмо со следующим текстом:

Марк, в отпуске

Стэн, в отпуске

Столбец B, Профессия, не важен, и его следует исключить из электронного письма.

заранее спасибо

Текущий (неполный) код

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xChangeArea As Range
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xMailBody As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set xChange = Range("$D$1")
    Set xChangeArea = Intersect(Target, xChange)
    ActiveWorkbook.Save
    If Not xChangeArea Is Nothing Then
        Set xOutApp = CreateObject("Outlook.Application")
        Set xMailItem = xOutApp.CreateItem(0)
        xMailBody = "Changes made in document: " & "(A Column Cell) is set to" & "(C column cell)"

        With xMailItem
            .To = "Email Address"
            .Subject = "Worksheet modified in " & ThisWorkbook.FullName
            .Body = xMailBody
            '.Attachments.Add (ThisWorkbook.FullName)
            .Display
        End With
        Set xChangeArea = Nothing
        Set xOutApp = Nothing
        Set xMailItem = Nothing
    End If
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Не могли бы вы обновить код. и объясни. Тогда мы сможем решить вашу проблему.

Chickenturtle 28.09.2018 14:12

Вам необходимо предоставить нам гораздо больше деталей, чтобы мы могли вам помочь (например, какой у вас код для отправки электронной почты?). Просто чтобы указать вам направление «а»: взгляните на метод рабочего листа SelectionChange. Вы должны иметь возможность запускать свою задачу оттуда ... опять же, недостаточно знаете о ваших требованиях, чтобы сказать, что это именно то, что вам нужно

Zac 28.09.2018 14:37

Текущий код не совсем близок к тому, чтобы быть готовым, но вот что у меня получилось - Сообщение отредактировано :)

Rasmus Pforr-Weiss 28.09.2018 15:00

Просто включите Отслеживание изменений в книге. Забудьте о попытках решить эту проблему по электронной почте. Это будет относительно сложная задача - справиться с этим так, как вы собираетесь, и (без обид), но вы даже не совсем приблизились к этому. «Одна или несколько ячеек», поэтому забудьте о Worksheet_Change или Selection_Change, если вы не можете смоделировать что-либо с помощью настраиваемого класса и некоторых статических переменных, а «Несколько пользователей» добавляет еще один уровень сложности. Пока у вас нет более конкретной, решаемой проблемы, которая больше, чем просто «Решите мою проблему», на этот вопрос здесь нет ответа.

David Zemens 28.09.2018 15:18

Да, похоже, что эта «маленькая» задача не такая уж и маленькая, и я думаю, что я уже не в себе. Может быть, однажды, когда я получу некоторый опыт работы с VBA. В любом случае спасибо

Rasmus Pforr-Weiss 28.09.2018 15:43
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
5
36
0

Другие вопросы по теме