[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Excelリストからメール作成』(Jessy)
こんばんは。
マクロは検索と記録を使いながら何とか使えるレベルのものです。
手元に下記のようなExcelの表があります。
A B C D E F G 番号 氏名 メール 品名 色 数量 期日 . . . . . . . . . . . . . . . . . . . . .
この表からOutlookでリマインドメールを出したいのですが
大変件数があるためマクロで出来たらいいなと思いかきこみました。
Outlookでテンプレートを作りそれを開くところまではマクロ出来ています。
『やりたいこと』
そのテンプレートの中に
1.B列の氏名を先頭に入力
2.C列のメールを宛先を入力
3.本文中の決まった場所にD列~F列を表にして挿入。その際、タイトル行も入れたい。(D1~F1)
4.本文中の決まった箇所にGの期日を入力
以上4点が希望です。
どんなコードを書いたら良いかどうにかご教示頂けますでしょうか?
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
ばれてまずい部分はダミーにして、まずはそれを提示できませんが?
■2
>1.B列の氏名を先頭に入力
>2.C列のメールを宛先を入力
>3.本文中の決まった場所にD列~F列を表にして挿入。その際、タイトル行も入れたい。(D1~F1)
>4.本文中の決まった箇所にGの期日を入力
いずれも↓が参考になるかもしれません。(3はちょっと微妙) [[20230517083855]] 『EXCELのシートからデータを読み取ってOUTLOOKの下書きに保存したい』(超素人なぼくちゃん)
(もこな2) 2023/08/11(金) 20:50:07
|[A] |[B] |[C] |[D] |[E] |[F] |[G] [1] |番号|氏名|メール |品名|色 |数量|期日 [2] | 1|nm1 |dummy@iz.false|X1 |red | 10|2023/8/1 [3] | 2|nm2 |dummy@iz.false|X2 |blue | 15|2023/8/2 [4] | 3|nm3 |dummy@iz.false|X3 |buluck | 20|2023/8/3 [5] | 4|nm4 |dummy@iz.false|X4 |orange | 25|2023/8/4 [6] | 5|nm5 |dummy@iz.false|X5 |tomato | 30|2023/8/5 [7] | 6|nm6 |dummy@iz.false|X6 |yellow | 35|2023/8/6 [8] | 7|nm7 |dummy@iz.false|X7 |burown | 40|2023/8/7 [9] | 8|nm8 |dummy@iz.false|X8 |darkski | 45|2023/8/8 [10]| 9|nm9 |dummy@iz.false|X9 |deepgreen| 50|2023/8/9
Option Explicit Sub OneInstance() Const MySign As String = "署名 Harahore Hare2023!" Dim Mi As Object Dim Ml As Object Dim Mfd As Object Dim Ns As Object Dim Mitem As Object Dim Fs As Object Dim Mf As Object Dim r As Range Dim Docs As String Dim i As Long Dim j As Long On Error GoTo StepE With Worksheets("LIST") Set r = .Cells(1).CurrentRegion End With If r.Count < 7 * 2 Then Exit Sub Set Fs = CreateObject("Scripting.FileSystemObject") If Not olapchk(Ml) Then Set Ml = CreateObject("Outlook.Application") Set Ns = Ml.GetNamespace("MAPI") Set Mfd = Ns.GetDefaultFolder(4) For i = 2 To r.Rows.Count Open ThisWorkbook.Path & "\" & "Mail.html" For Output As #1 Print #1, "<html>" Print #1, "<head>" Print #1, "<style type=""Text/css"">" Print #1, "div {font-size:20px; padding:1px; margin:1px;}" Print #1, "td,th {border:1px dotted #00aaff;text-align:center;width:100px;padding:2px 10px;font-size:16px;}" Print #1, "</style>" Print #1, "</head>" Print #1, "<Body>" '1.B列の氏名を先頭に入力 '2.C列のメールを宛先を入力 '3.本文中の決まった場所にD列~F列を表にして挿入。その際、タイトル行も入れたい。(D1~F1) '4.本文中の決まった箇所にGの期日を入力 Print #1, "<br>" & r(i, 2) & Chr(32) & "様" Print #1, "<div> </div>" Print #1, "<table><tr>" For j = 4 To r.Columns.Count - 1 Print #1, "<td>" & r(1, j) & "</td>" Next Print #1, "</ tr><tr>" For j = 4 To r.Columns.Count - 1 Print #1, "<td>" & r(i, j) & "</td>" Next Print #1, "</tr></table>" Print #1, "<div>" & r(i, 7) & "</div>" Print #1, "<pre><div>" & MySign & "</div></pre>" Print #1, "</body>" Print #1, "</html>" Close #1 'ForReading = 1 Set Mf = Fs.OpenTextFile(ThisWorkbook.Path & "\Mail.html", 1) Docs = Mf.ReadAll Mf.Close Mfd.Display 'olMailItem = 0 Set Mitem = Ml.CreateItem(0) With Mitem .To = r(i, 3) .Subject = r(i, 2) 'olFormatHTML = 2 .BodyFormat = 2 .HTMLBody = Docs .Send End With Set Mitem = Nothing Next Kill ThisWorkbook.Path & "\" & "Mail.html" '送信トレイ Set Mi = Mfd.Items Do While Mi.Count > 0 DoEvents Loop Ml.Quit Set Mi = Nothing Set Mf = Nothing Set Ml = Nothing Set Mfd = Nothing Set Ns = Nothing Set Fs = Nothing Set r = Nothing Exit Sub StepE: MsgBox "原因不明のエラーです。確認後再起動してください。" & _ Err.Number & " : " & Chr(13) & Err.Description, vbCritical, "VBA-ERRMSG" If olapchk(Ml) Then Ml.Quit End If Set Mi = Nothing Set Mf = Nothing Set Ml = Nothing Set Mfd = Nothing Set Ns = Nothing Set Fs = Nothing Set r = Nothing End Sub Private Function olapchk(ol As Object) As Boolean olapchk = True On Error Resume Next Set ol = GetObject(, "Outlook.Application") If ol Is Nothing Then olapchk = False End If On Error GoTo 0 End Function (隠居Z) 2023/08/12(土) 13:01:58
ちょっと確認です。 1. Excelの表を図形にしたものを貼り付ければいいんですか? それとも、Wordの表のようなものでないといけないのですか? 2. 期日(G列)も表のなかに入れたらマズイのですか? 氏名でフィルタを掛けたとき、期日は一種類しかないんですか? もし複数があったら、本文にはどう反映するんですか?
(xyz) 2023/08/12(土) 14:27:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.