• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロ メール作成)

エクセルマクロでメール作成の方法

このQ&Aのポイント
  • エクセルマクロを使ってメール作成を簡略化する方法について解説します。
  • 具体的なマクロ構文やシートの設定方法、メール作成の手順を詳しく説明します。
  • また、メール作成時の注意点や改善案についても紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1です。 #1のコードで sComd = "Mailto:" & 宛先1 & "?cc=" & 宛先2 & "&Subject=" & 件名 & "&body=" & 本文 CreateObject("WScript.Shell").Run sComd とすると「CC」が加わりました。

nobby-frog
質問者

お礼

ご回答、ありがとうございます! vbCrLfで改行できない旨、冒頭に記載すべきでした。 お手間をとらせてしまい、申し訳ありませんでした。 おかげさまで、ほぼ希望する形になりました。 早速色々と試してみましたが、ご指摘の通り、自動改行には こだわらない方がよさそうですね。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2のお礼に関して >vbCrLfで改行できない旨、冒頭に記載すべきでした それで#1の回答の s = s & Mid(本文, st, p - st + 1) & "%0D%0A" にしてやってくれましたでしょうね。 #1+#2が本来の回答ですが、1つずつ、つぶして(テストして)いったので。 ーー 添付ファイルの件は、情報が少なくて。 WSHのMailToでは出来なくて、手動になるのかもしれません。 http://www.moug.net/faq/viewtopic.php?t=38325 の >OutlookExpressの場合、添付ファイルは指定できなかったと思いますので と歯切れが悪い。 ーー メイル送信は BASP21やCDOなど色々有るようなのでそっちの利用を検討しては。 == http://www.nobotan.net/script/index.html こんな記事も見つかりましたよ。フリーソフト。ファイル添付も可能らしい。

nobby-frog
質問者

お礼

ご回答ありがとうございます。 添付ファイルの件、私の方も色々探してみたものの、未だ発見できません。 しかしながら、今回のマクロはメールの宛先・件名・本文までを作成して メール送信の直前で止まるものですので、ご指摘のように手動で対応して いきたいと思います。 CDOについては、すごく簡単なものがありましたが、送信者(自分)を 簡単に変更できる(いわば、偽装できてしまう)部分があり、 同様の業務を行っている人に、このマクロを提供することが難しいと考え、 とりあえずは、ファイルを渡すだけで動作してくれるものを、と 考えていた次第です。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>本文の改行も反映できるようにしたいのですが をやってみました。 簡単にvbCrLfを挟んだら仕舞いと思っていたが、そうは行かず、調べて下記も1方法でしょう。面倒なものですね。 メイル発信のテスト上、繰り返しせず。第2行目しか実行しないように変えてます。 ロジックは句読点(の句点「。」)で全て改行するようにしてます。 文字数で改行するとかのロジック・コードは可能です。 人間が判断して、目じるしの/など入れて/を改行に置き換えるのも可能です。自動改行に余り凝らないほうがよさそう。 ーーー Sub メール書き込み() Dim 宛先1 As String Dim 件名 As String Dim 本文 As String Dim 添付 As String Dim 宛先2 As String Dim 行 As Long, 行下端 As Long Dim sComd As String 行下端 = Range("B65536").End(xlUp).Row 行 = 2 '-- 'Do While 行 <= 行下端 宛先1 = Cells(行, "A") 宛先2 = Cells(行, "B") 件名 = Cells(行, "C") 本文 = Cells(行, "D") 添付 = Cells(行, "E") s = "" st = 1 Do p = InStr(st, 本文, "。") If p = 0 Then Exit Do s = s & Mid(本文, st, p - st + 1) & "%0D%0A" 'vbCrLf st = p + 1 Loop 本文 = s '-- sComd = "Mailto:" & 宛先1 & "?Subject=" & 件名 & "&body=" & 本文 CreateObject("WScript.Shell").Run sComd 行 = 行 + 1 'Loop '--- End Sub ーーー なおINSTR関数を使っているが、Replaceメソッドでも可能です。こちらが簡単かな。

関連するQ&A