環境
Windowsの仕様
エディション:Windows 10 Pro
バージョン:20H2
経緯
VBAを使って、Excelで作った表を貼り付けられないか、
今回勉強しました。
「.GetInspector().WordEditor.Windows(1).Selection.Paste」を使う
「.GetInspector().WordEditor.Windows(1).Selection.Paste 」を使うとうまくいきました。コードを載せます。
Sub SendEmail() Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Dim wsMail As Worksheet Set objOutlook = New Outlook.Application Set wsMail = ThisWorkbook.Sheets(1) Set objMail = objOutlook.CreateItem(olMailItem) ActiveWorkbook.Save With wsMail objMail.To = .Range("A6") 'メール宛先 objMail.CC = .Range("B6") 'CC objMail.Subject = .Range("C6").Value 'メール件名 objMail.BodyFormat = 3 'メールの形式 objMail.Body = .Range("D6").Value 'メール本文 .Range("D10:F:15").copy '表をコピー obiMail.GetInspector().WordEditor.Windows(1).Selection.Paste End With End Sub
コードの説明をします。空白の行はカウントしてません。
1行目、マクロの名前を決めてます。
2~4行目、変数の宣言しています。
5~7行目、変数をセットしています。5行目、私はsheet1に”メール宛先”とか”メール件名”とかの情報を書いているので、それを呼ぶための文です。
8行目、ファイルを上書き保存します。
9行目、With文開始です。*私はセルに各情報を載せているので、こんな書き方ですが、直接、アドレスやメール文を”=”の後に入力しても大丈夫です。
10行目、「メールの宛先」です。複数人ある場合「&」でつなげると、複数の人に送れますよ。
11行目、「CC」です。
12行目、「メール件名」です。
13行目、「メール形式」です。私は「3」のリッチテキスト型にしています。「0」だとテキスト型、「2」だとHTML型になります。用途に合わせて設定してください。
14行目、「メール本文」です。
15行目、表をコピーします。
16行目、ここが表を貼り付ける命令です。
17行目、With文終わりです。
18行目、マクロ終わりです。
この後の展開
このやり方だと、表が本文の一番初めにきてしまいます。私は本文の最後に表を貼りたいのですが、
全然うまくいかず、あきらめました。勉強します。
なので、今回は表を貼るだけの処理になります。
参考になれったら、幸いです。
ここまで読んでいただきありがとうございました。
【AI×就労支援】Neuro Dive(ニューロダイブ)で先端ITを学び、スペシャリストとしての就職を目指しませんか?
最後に宣伝をさせてください。
「AIやデータサイエンスを仕事にしたい」 「でも、独学には限界が…」
そんな方に知ってほしいのが、日本初の”先端IT特化型”就労移行支援『Neuro Dive』です。
IT職種への就職率80%超、職場定着率95%超という実績は、信頼の証。 障害のある方の「学びたい」を「仕事」に繋げるプロフェッショナルです。
ご興味があれば、ぜひ公式サイトをチェックしてみてください。