私は、私が望んでいるような幸運ではなく、私よりも VBA に精通している人々に尋ねてきました。必要なものは次のとおりです。
- 件名に「Stats1」、「Stats2」、「Stats3」などを含む受信メール
- ルールがトリガーされ、送信者の電子メール アドレスを取得する
- ワークブックを開き、電子メール アドレスをワークブックに渡します (例: emaillog.xlsm)
- ワークブックに追加 (上書きではありません)
- 「emaillog.xlsm」にメールアドレス、日時を記録
- Excel スクリプトを実行します (emailend.xlsm の例)
- 「emailsend.xlsm」から「emaillog.xlsm」の最新エントリまでの範囲のデータを送信します
- 「emaillog.xlsm」を保存して閉じます
Excel部分が送信するために私が持っているものは次のとおりです。
Public dTime As Date
Sub AutoSchedule1()
dTime = Now() + TimeValue("01:00:00")
Sheet("Sheet1").Range("u1").Value = "Email On, next send at " & Hour(dTime) & ":" & Minute(dTime)
ActiveWorkbook.RefreshAll
Application.OnTime dTime, "SendStatsTeam"
If Hour(dTime) >= 18 Then
Application.OnTime dTime, "SendStatsTeam", , False
Exit Sub
End If
End Sub
Sub SendStatsTeam()
Dim AWorksheet As Worksheet
Dim Sendrng As Range
Dim rng As Range
Dim Hournow As Long
AutoSchedule1
On Error GoTo StopMacro
If Hour(Now()) > 12 Then
Hournow = Hour(Now()) - 12
Else
Hournow = Hour(Now())
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sendrng = Worksheets("Sheet1").Range("A1:Z26")
Set AWorksheet = ActiveSheet
With Sendrng
ActiveWorkbook.EnvelopeVisible = True
With .Parent.MailEnvelope
.Introduction = "Here are your stats"
With .Item
.To = SenderEmailAddress
.CC = ""
.BCC = ""
.Subject = "Stats so far today" & Hour(Now()) & ":" & Application.WorksheetFunction.Text(Minute(Now()), "00")
.Send
End With
End With
rng.Select
End With
AWorksheet.Select
StopMacro:
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
ActiveWorkbook.EnvelopeVisible = False
End Sub
Sub emailoff()
Application.OnTime dTime, "SendStatsTeam", , False
Worksheets("Sheet2").Range("u1").Value = "Email Off"
End Sub
私は VBA にかなり慣れていないため、ここですべてを正しく行っていないことに気付きましたが、Outlook の部分を理解するためにできることはすべて試しました。
どんな助けでも大歓迎です - 私は次の部分のために何/どこに行くべきかを理解できないところにいるだけです。
ご協力いただける場合は、メールの件名に基づいて、さまざまな範囲のさまざまなシートを送信する機能を追加したいと考えています。
ありがとう