0
マクロを初めて使用しています。 期日が近づいたら自動的にメールを送信する必要があります。 (約15日前の例)。私は、これまでのところ、do-dateまたは条件付き書式に関係なく、電子メールがすべての個人に送信されるまでになっています。VBA 2013で電子メールを自動送信
Dim myApp As Outlook.Application, mymail As Outlook.MailItem
Dim mydate1 As Date
Dim mydate2 As Long
Dim datetoday1 As Date
Dim datetoday2 As Long
Dim x As Long
With Sheet1
Lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To Lastrow
mydate1 = Cells(x, 6).Value
mydate2 = mydate1
Cells(x, 10).Value = mydate2
datetoday1 = Date
datetoday2 = datetoday1
Cells(x, 9).Value = datetoday2
If mydate2 - datetoday2 >= 15 Then
End If
'Cells(x, 8).Font.Bold = “Send”
Cells(x, 8).Interior.ColorIndex = 3
Cells(x, 8).Font.ColorIndex = 1
Cells(x, 8).Font.Bold = True
Cells(x, 8).Value = datetoday2 - mydate2
Dim olApp As Outlook.Application
Dim olEmail As Outlook.MailItem
Set olApp = New Outlook.Application
Set olEmail = olApp.CreateItem(olMailItem)
olEmail.To = Cells(, 5).Value
With olEmail
.BodyFormat = olFormatHTML
'.Display
.HTMLBody = "<h1>Hej </h1><br> Detta är ett mail som du ska läsa" & "<br>" & .HTMLBody
.Subject = "Möte"
.BCC = Cells(x, 5).Value
'.send
End With
Next
Set myApp = Nothing
Set mymail = Nothing
End With
End Sub
'mydate2 - datetoday2> = 15'が問題なく動作します。日付は整数値が日数に等しい倍数として格納されるため、気になるものがすべて日数であれば、それを加算したり減算したりすることができます。何かがあれば、LongにキャストされたOPは余分なもので、小数点の右側に格納されている時間値のみを破棄します。 – Comintern
私はそれを知っています。小数点以下を削除する便利な関数を紹介したかったのです。日付の減算で、彼のテストは>となり、それはもっと自然に私に読まれる= 15となります。スタイルは個人的なものです:) –
私は '>'が目的のために存在すると仮定しています - たとえば、コードが毎日実行されていないために逃した期限を考慮する。あなたが言うように、 "スタイルは個人的なものです"と言いますが、私は一般的に、関数呼び出しのパラメータの順番を覚えるよりも読みやすい、5行と数学演算子よりもはるかに明確で読みやすいコードを見つけます。 – Comintern