Четвер, 17 лютого 2022
  1 відповіді
  5.8 тис. Відвідувань
0
Голосів
розстібати
Тому я використав цю чудову статтю Як автоматично надсилати електронну пошту на основі значення клітинки в Excel? (extendoffice.com) і зібрав відповіді з відповідей, щоб це запрацювало, як мені потрібно, але остання частина, яку я не можу зрозуміти, це як дублювати те, що я зробив, щоб запустити кілька комірок. Я намагався скопіювати/вставити та змінити код із різними значеннями, наприклад C4, C5 тощо, але завжди отримую помилки. У мене це чудово працює: якщо значення в C3 < 5, він надішле електронний лист, коли робочу книгу буде збережено. Що мені зараз потрібно, оскільки це для аркуша інвентаризації, так це мати кілька інших значень клітинок, перевірених на різні значення . Наприклад, якщо лише C3 < 5, надішліть електронний лист. Якщо лише C4 менше 6, надішліть електронний лист. Якщо C3 < 5, C4 < 6 і C5 < 3, надішліть електронний лист. Було б непогано, якби під час збереження генерувався лише один електронний лист із усіма значеннями, які відповідають критеріям <. З точки зору реального світу (а не термінів кодування), електронна таблиця є місцем, де технічні спеціалісти можуть перевіряти та видаляти елементи зі сховища. Що я намагаюся зробити, так це автоматичне надсилання електронного листа, коли хтось зберігає робочу книгу, а рівень запасів товару впав нижче певного значення, тому я знаю, що замовлення потрібно розмістити найближчим часом. Поки що це мій код:

ThisWorkbook
Приватна підпорядкована книга_AfterSave(ByVal Success As Boolean)
On Error Resume Next
Dim xI як ціле число
Dim xRg As Range
Встановити xRg = Range("Information!C3")
xI = Int(xRg.Value)
Якщо xI < 5 Тоді
Телефонуйте Mail_small_Text_Outlook
End If
End Sub

Модуль1
Sub Mail_small_Text_Outlook()
Зменшіть xOutApp як об’єкт
Змінити xOutMail як об’єкт
Заглушити xMailBody як рядок
Встановіть xOutApp = CreateObject("Outlook.Application")
Встановити xOutMail = xOutApp.CreateItem(0)
xMailBody = "Привіт" & vbNewLine & vbNewLine & _
"Це рядок 1" & vbNewLine & _
Range("Information!C3") & vbNewLine & _
«Це рядок 2»
On Error Resume Next
За допомогою xOutMail
.To = "Адреса електронної пошти"
.CC = ""
.BCC = ""
.Subject = "відправити тестом значення комірки"
.Body = xMailBody
.Відобразити або використовувати .Send
Кінець з
При помилці GoTo 0
Встановіть xOutMail = Нічого
Встановіть xOutApp = Нічого
End Sub
2 років тому
·
# 2473
0
Голосів
розстібати
Привіт Джейк,

Відповідно до ваших потреб, будь ласка, знайдіть ThisWorkbook в Програми Microsoft Visual Basic вікна.
  567959C0-D2E1-4819-85E7-FA20A3D06BE9.png

Подвійне клацання ThisWorkbook і скопіюйте код нижче:

'Update by Extendoffice 2022/2/17
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

On Error Resume Next

Dim RgC3 As Range
Dim RgC4 As Range
Dim RgC5 As Range

Set RgC3 = Range("Information!C3")
Set RgC4 = Range("Information!C4")
Set RgC5 = Range("Information!C5")


If (IsNumeric(RgC3) And RgC3.Value < 5) And (IsNumeric(RgC4) And RgC4.Value < 6) And (IsNumeric(RgC5) And RgC5.Value < 3) Then
Call Mail_small_Text_Outlook

ElseIf IsNumeric(RgC3) And RgC3.Value < 5 Then
Call Mail_small_Text_Outlook

ElseIf IsNumeric(RgC4) And RgC4.Value < 6 Then
Call Mail_small_Text_Outlook

End If

End Sub


Sub Mail_small_Text_Outlook()


Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi there" & vbNewLine & vbNewLine & _
"This is line 1" & vbNewLine & _
Range("Information!C3") & vbNewLine & _
"This is line 2"
On Error Resume Next
With xOutMail
.To = "Email Address"
.CC = ""
.BCC = ""
.Subject = "send by cell value test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing

End Sub


За потреби змініть частину xMailBody.

Аманда
  • Сторінки:
  • 1
На цю посаду ще немає відповідей.