レポートのメール送信の自動化として使用する Excel シートがあります。現在、Excelワークブックの実際のコピーを電子メールに添付して送信しています。メーラーには数人の異なる人が含まれており、毎日異なるレポートを受け取ります。一部のファイルのサイズが原因で、サイズが大きすぎて電子メールを送信できないという問題が発生し始めているため、代わりにファイルへのリンクを送信するように切り替えたいと考えています。壁。
Lotus Notes 8.5 を使用しています。VBA は範囲を循環し、各セルには「,」で区切られたレポートのリストがあります。リストを受け取り、文字列としてメーラーに渡します。メーラーは文字列を受け取り、それを配列に変換して分割し、レポートが最新のものであることを確認します。1 つの電子メールに、最大 10 個の異なるレポートを含めることができます。リンクを含める HTML MIME メールを作成してみました。ここに私が現在持っているコードがあります:
Sub Send_HTML_Email(ByRef Name As String, ByRef Address As String, ByRef Reports As String)
Const ENC_IDENTITY_8BIT = 1729
'Send Lotus Notes email containing links to files on local computer
Dim NSession As Object 'NotesSession
Dim NDatabase As Object 'NotesDatabase
Dim NStream As Object 'NotesStream
Dim NDoc As Object 'NotesDocument
Dim NMIMEBody As Object 'NotesMIMEEntity
Dim SendTo As String
Dim subject As String
Dim HTML As String, HTMLbody As String
Dim Array1() As String
Dim Links As String
Dim gRange As Variant
Dim i As Integer
SendTo = "myEmail@address.com"
subject = "My Subject " & Name & "."
Debug.Print subject
Set NSession = CreateObject("Notes.NotesSession") 'using Lotus Notes Automation Classes (OLE)
Set NDatabase = NSession.GetDatabase("", "")
If Not NDatabase.IsOpen Then NDatabase.OPENMAIL
Set NStream = NSession.CreateStream
Array1 = Split(Reports, ",")
i = 1
HTML = "<html>" & vbLf & _
"<head>" & vbLf & _
"<meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" />" & vbLf & _
"</head>" & vbLf & _
"<body>" & vbLf & _
"<p>" & gRange.Value & "</p>"
For Each gRange In Array1
Select Case gRange
Case "Report name 1"
Reports = "G:\file Location\Report Name 1.xlsx"
Case "Report name 2"
Reports = "G:\file Location\Report Name 2.xlsx"
Case "Report name 3"
Reports = "G:\file Location\Report Name 3.xlsx"
Case "Report name 4"
Reports = "G:\file Location\Report Name 4.xlsx"
Case "Report name 5"
Reports = "G:\file Location\Report Name 5.xlsx"
Case "Report name 6"
Reports = "G:\file Location\Report Name 6.xlsx"
End Select
If Reports <> "" And Format(FileDateTime(Reports), "mm/dd/yyyy") = Format(Now, "mm/dd/yyyy") Then
Select Case gRange
Case "Report name 1"
Links = "G:\file%20Location\Report%20Name%201.xlsx"
Case "Report name 2"
Links = "G:\file%20Location\Report%20Name%202.xlsx"
Case "Report name 3"
Links = "G:\file%20Location\Report%20Name%203.xlsx"
Case "Report name 4"
Links = "G:\file%20Location\Report%20Name%204.xlsx"
Case "Report name 5"
Links = "G:\file%20Location\Report%20Name%205.xlsx"
End Select
If Links <> "" Then
HTMLbodyi = ""<a href='file://" & Links & "'>" & gRange & "</a><br>""
End If
"</body>" & vbLf & _
"</html>"
i = i + 1
End If
Next gRange
NSession.ConvertMime = False 'Don't convert MIME to rich text
Set NDoc = NDatabase.CreateDocument()
With NDoc
.Form = "Memo"
.subject = subject
.SendTo = Split(SendTo, ",")
Set NMIMEBody = .CreateMIMEEntity
NStream.WriteText HTML
NMIMEBody.SetContentFromText NStream, "text/html; charset=UTF-8", ENC_IDENTITY_8BIT
.Send False
.Save True, False, False
End With
NSession.ConvertMime = True 'Restore conversion
Set NDoc = Nothing
Set NSession = Nothing
End Sub
Case ステートメントを使用して、異なるレポート名を持つセルの配列に基づいて、レポートとリンクのセットを切り替えています。ある人物のセルは と のみを持ちReport name 1
、Report name 3
次の人物はそれらすべてを持っている可能性があります。
私が得ることができるどんな助けにも本当に感謝しています!
メールは送信されますが、空白であるか、最初のメールに到達してリンク先HTMLbodyi
の最初の部分のみが含まれ<a
、残りは空白です。