エクセルの関数を使ってメールを作成する方法について教えて下さい。

=HYPERLINK("mailto:"&A1"?cc="&A2&"; "&A3&"&subject="&A4&"&body="&A5,"セルの名称")
にて指定したセルとクリックするとメールアドレス(to、cc)と件名、本文が入ったメールが作成されました。

ただ、本文(A5)が改行されず表示されます。
セルが分かれてもいいですので、改行する方法を教えて頂けますでしょうか?

【イメージ】
A5(改行)
(改行)
A6(改行)
・・・

このQ&Aに関連する最新のQ&A

A 回答 (4件)

すいません。

間違えました。


A5&CHAR(10)&CHAR(13)&CHAR(10)&CHAR(13)&A6&CHAR(10)&CHAR(13)・・・
    • good
    • 1

【イメージ】


A5(改行)
(改行)
A6(改行)
・・・
を以下のようにしてみてください。
A5&CHAR(10)+CHAR(13)&CHAR(10)+CHAR(13)A6&CHAR(10)+CHAR(13)・・・


CHAR関数は指定された文字コードの文字を返します。
ちなみにCHAR(9)はTabを、CHAR(10)はラインフィードを、CHAR(13)はキャリッジリターンを表します。

Windowsでは、Cr(キャリッジリターン)+Lf(ラインフィード)が改行ですので、CHAR(10)+CHAR(13)が改行です。
    • good
    • 1

No.1です。

間違えました。
>こんにちは%0d%daお元気ですか

こんにちは%0d%0aお元気ですか

でした。修正致します。
    • good
    • 0

当方、Windows7


Office 2010
メーラーThunderbirdですが
改行したい所に%0d%0aと入れるといいと思います。

具体的には、
A5に
こんにちは%0d%daお元気ですか

などと入れて、当方では改行されました。
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qセルの値を含んだメールを作成したい

エクセルについて質問です。

【A1:名前、B1:電話番号、C1:金額、D1:メールアドレス】
と4列のデータが100名ほど入ったシートがあります。

D列のメールアドレス宛に、A~Cの値を差込した本文を入れてメールが作成されるようにしたいのですが、そういったことは可能でしょうか?
定型文に個々のデータを差し込んだメールを作成といえばいいのでしょうか。
上手く説明できなくてすみません;;

HTMLのタグでいうなら、
mailto:D1?subject=確認メール&body=名前はA1です。電話番号はB1です。金額はC1になります。
というようなことがしたいのです…。

スキルは初級者レベルです。
もしよい方法をご存知でしたら教えて下さい。

Aベストアンサー

別にスキルは入りません。HYPERLINK関数を使います。

=HYPERLINK("mailto:"&D1&"?subject=確認メール&body=名前は"&A1&"です。
%0D%0A電話番号は"&B1&"です。%0D%0A金額は"&C1&"になります。","リンク")

こんな感じでできます。header部分として 先頭に空白行が入りますが
それはなんともならないと思います。

QExcelVBAでメールを作成してメーラーを起動するプログラムを作って

ExcelVBAでメールを作成してメーラーを起動するプログラムを作っているのですがうまくいかない点が2つほどあります。

(1)いろいろ条件によって文章を組み立てて、
Excelに一旦、本文を表示するところまで行ったのですが、
それをクリップボードにコピーして、
GetText関数でmailtoのbodyに渡し
メーラーが起動されるのですが、
メール本文を見るとダブルコーテーションで囲われているところがいくつかあり、
(セル内改行があったところなどが
自動的に囲われてしまうみたいで)
改行もされず本文が全部つながってしまいます。

メール本文でダブルコーテーションなしにして元の改行を入れるにはどうしたらいいのでしょうか?

(2)
bodyの本文が長いとエラーになってしまい、
メーラーが起動されません。
2千文字くらいしか入らないみたいです。

入れなければならない文言が決まっているので、
文章の文字数を減らすことはできません。

ダブルコーテーションは消して、
改行をそのまま入れて、
文章の文字数はそのままで、メーラーからを送るにはどうしたらいいか何日か悩んだのですが解決できません。

ご教示お願いします。

ExcelVBAでメールを作成してメーラーを起動するプログラムを作っているのですがうまくいかない点が2つほどあります。

(1)いろいろ条件によって文章を組み立てて、
Excelに一旦、本文を表示するところまで行ったのですが、
それをクリップボードにコピーして、
GetText関数でmailtoのbodyに渡し
メーラーが起動されるのですが、
メール本文を見るとダブルコーテーションで囲われているところがいくつかあり、
(セル内改行があったところなどが
自動的に囲われてしまうみたいで)
改行もされず本文が全...続きを読む

Aベストアンサー

>mailtoコマンド
mailtoプロトコル...ですよねorz

>CreateProcess関数を使うとできそうな記事もありますがちょっとハードルが高そうです。
VBA的には Shell関数を使えばいいのでそうでもないですか。
レジストリを見に行って、既定メーラーを取得して起動オプションに本文をくっつける感じ?

Sub try_3()
  Const HKEY = "HKEY_CLASSES_ROOT\mailto\shell\open\command\"
  Dim Flg  As Boolean
  Dim Arg  As String
  Dim sPath As String
  Dim i   As Long
  Dim b()  As Byte
  Dim tmp, ary

  On Error GoTo errHandler

  tmp = Selection.Value
  If IsArray(tmp) Then
    ReDim ary(1 To UBound(tmp))
    For i = 1 To UBound(tmp)
      ary(i) = Join(Application.Index(tmp, i, 0), "")
    Next
    Arg = Join(ary, vbLf)
  Else
    Arg = tmp
  End If
  
  '既定メーラー取得(WinXP)
  With CreateObject("WScript.Shell")
    sPath = .ExpandEnvironmentStrings(.RegRead(HKEY))
  End With
  sPath = Replace$(Replace$(sPath, """%1""", ""), "%1", "")
  Flg = InStr(1, sPath, "thunderbird", vbTextCompare)
  
  If Flg Then
    'thunderbirdだと文字化けしたのでUTFエンコード
    With CreateObject("ScriptControl")
      .Language = "JScript"
      Arg = .CodeObject.encodeURI(Arg)
    End With
  Else
    '簡易的にSJISエンコード
    b = StrConv(Arg, vbFromUnicode)
    Arg = ""
    For i = 0 To UBound(b)
      Arg = Arg & "%" & Right$("0" & Hex$(b(i)), 2)
    Next
  End If
  
  Arg = "mailto:メールアドレス?" & _
     "subject=件名&" & _
     "body=" & Arg

  Shell sPath & Arg

  Exit Sub
errHandler:
  MsgBox Err.Number & ":" & Err.Description
End Sub

とりあえずwinXPで Outlook/Outlook Express/thunderbird は動きました。
他環境だったりする場合、ここ
http://jehupc.exblog.jp/9727243/
の情報が参考になると思います。

#個人的にはCDOをおすすめしますが

>mailtoコマンド
mailtoプロトコル...ですよねorz

>CreateProcess関数を使うとできそうな記事もありますがちょっとハードルが高そうです。
VBA的には Shell関数を使えばいいのでそうでもないですか。
レジストリを見に行って、既定メーラーを取得して起動オプションに本文をくっつける感じ?

Sub try_3()
  Const HKEY = "HKEY_CLASSES_ROOT\mailto\shell\open\command\"
  Dim Flg  As Boolean
  Dim Arg  As String
  Dim sPath As String
  Dim i   As Long
  Dim b()  As Byte
  Dim tmp...続きを読む

QエクセルVBAでOutlookメール作成

いろいろ検索や質問をしてエクセルVBAで、下記のコードによりOutlookのメールを自動作成できるようになりました。

Sub TEST01()
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは!" & vbNewLine & "テストメールです。" & vbNewLine & "よろしくおねがいします。"
objMAIL.To = "XXXX@XXXXX.co.jp" '宛先
objMAIL.Subject = "テスト" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.display '表示
End Sub

それで、実際にはstrMOJI に代入した文字列の下に、このマクロを記述してあるBOOKのSheets("Sheet1").Range("A1:D10")をコピーし、
「リッチテキスト形式」で貼り付けたいのです。
どのようなコードに変えればよいのか教えていただけると助かります。
よろしくお願いいたします。

いろいろ検索や質問をしてエクセルVBAで、下記のコードによりOutlookのメールを自動作成できるようになりました。

Sub TEST01()
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは!" & vbNewLine & "テストメールです。" & vbNewLine & "よろしくおねがいします。"
objMAIL.To = "XXXX@XXXXX.co.jp" '宛先
objMAIL.Subject = "テスト" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.display '表示
End S...続きを読む

Aベストアンサー

>ただ、マクロを2回以上走らせると、その都度いくつもOutlookが立ち上がってしまいます。
>これは解消できますか?
それは前回QAで手当て済みだったんですけどね。

Dim oApp    As Object
Dim objMAIL  As Object
Dim strMOJI(1) As String
Dim n     As Long

On Error Resume Next
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If oApp Is Nothing Then
  Set oApp = CreateObject("Outlook.Application")
  oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
End If

Set objMAIL = oApp.CreateItem(0)
strMOJI(0) = "こんにちは!" & vbCrLf & _
       "テストメールです。" & vbCrLf & _
       "よろしくおねがいします。" & vbCrLf
strMOJI(1) = "以上です。" & vbCrLf & _
       "EMAX株式会社" & vbCrLf & _
       "Emax"
objMAIL.To = "E-Mail_Address_Here"
objMAIL.Subject = "テスト"
objMAIL.BodyFormat = 2 'HTML形式
objMAIL.Body = strMOJI(0) & strMOJI(1)
objMAIL.display

n = Len(strMOJI(0))
ActiveSheet.Range("A1:D10").Copy
oApp.ActiveInspector.WordEditor.Range(n, n).Paste
Application.CutCopyMode = False

Set objMAIL = Nothing
Set oApp = Nothing

BodyFormatはHTML形式じゃないと書式が維持できないような感じです。
#バージョン、もしくは受信側のメーラーによるかもしれませんけど..

>ただ、マクロを2回以上走らせると、その都度いくつもOutlookが立ち上がってしまいます。
>これは解消できますか?
それは前回QAで手当て済みだったんですけどね。

Dim oApp    As Object
Dim objMAIL  As Object
Dim strMOJI(1) As String
Dim n     As Long

On Error Resume Next
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If oApp Is Nothing Then
  Set oApp = CreateObject("Outlook.Application")
  oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
End If

...続きを読む

Qmailto:の本文に文字数制限はありますか?

こんにちは

mailto: で、宛先、件名、本文を指定したメールを
起動しようとしていますが、
?body="" 内に記載する文字が一定数を超えると、
メーラーを起動できなくなります。
body に記載できる文字数に制限はありますでしょうか。
また、これを回避する方法はありますでしょうか。
ご存知の方がいらっしゃいましたら、
よろしくご教示ください。

該当箇所は、以下のように記述しています。
<li>○○の場合は<a href="mailto:xxxxx@xx.xx.jp?subject=[xxxxx] xxx&cc=xxx@xx.xx.jp&body=
○○ご担当者さま%0d%0a
.....<中略>
">こちら>></a></li>

文字数は、ざっと1200ワードです。

よろしくお願いいたします。

Aベストアンサー

エンティティー化しても、最近はメールアドレス収集ロボットにアドレスを抜かれるようですので、
mailtoを使おうとジタバタするより、メールフォームを作ってしまった方がよいのでは?

以下は、かなり自由度があります。

http://www.cgi-amigo.com/formmail.html

QEXCEL VBAでメール添付して送信

こんにちは。
EXCEL VBAで
自分のファイルをある宛先にメールで送信したい場合は、
どのようにしたらできますか?
どなたか、わかる方・・・教えてください。
よろしくお願いします。

Aベストアンサー

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olMailItem)
myDATA.To = Range("B3").Value
myDATA.CC = Range("F3").Value
myDATA.Subject = Range("C3").Value
myDATA.Body = Range("D3").Value
myDATA.Attachments.Add Range("G3").Value
myDATA.Send
Set myDATA = Nothing
Set myOLApp = Nothing
End Sub

コピペして使ってみてください。コマンドの意味は先紹介のスレに
説明して有ります。

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olM...続きを読む

Qエクセル内のメールアドレスをメール送信先に一斉に移す方法

エクセル内に多数のメールアドレスを記録しています。(縦にズラーッとタイプしています。)1つ1つのアドレスが1行ずつ入っています。

これらのメールアドレスを簡単にメールの送信先に入れる方法はありますでしょうか。1つ1つコピー、貼り付けをしていくしかないのでしょうか。

詳しい方がいましたら教えてください。

Aベストアンサー

・メールアドレスが入力されているセル部分を選択し、Copy します。

・別のシートに、"形式を選択して貼り付け"
  [ 行列を入れ替える ] にチェックを入れてから、ok

・最後に、"名前をつけて保存" する際に、 ファイルの種類を CSV (カンマ区切り)にします。

 以上の作業で保存されたファイルを、「メモ帳」などで開けば良いと思います。

QEXCELマクロで複数のEMAIL宛先を指定

WIN XP, EXCEL2002, メーラーはOUTLOOK2002を使っています。
EXCELマクロで複数のEMAIL宛先を指定することはできますか?

ActiveWorkbook.SendMail Recipients:="email@*****.co.jp", Subject:="test"
にてひとつの宛先の場合はちゃんと送信できましたが、複数の宛先を指定する方法が分かりません。
よろしくお願いいたします。

Aベストアンサー

以下のようにすると、1本のメールを複数人に送れます。

Dim Str(4) As String
Str(0) = "email0@*****.co.jp"
Str(1) = "email1@*****.co.jp"
Str(2) = "email2@*****.co.jp"
Str(3) = "email3@*****.co.jp"
ActiveWorkbook.SendMail Recipients:=Str, Subject:="test"

または

ActiveWorkbook.SendMail Recipients:="email0@*****.co.jp,email1@*****.co.jp,email2@*****.co.jp,email3@*****.co.jp", Subject:="test"

最初のは#2の方の回答と似ていますが、#2の方の回答は1本のメールを4人に送るのではなく、4本のメールを単独で1人ずつに送っています。

この回答では、1本のメールを4人に送っています。

「送った相手に、誰々に送っているのか、知らせたい」場合は1本のメールで済ませます。

「送った相手に、誰々に送っているのか、知らせたくない」場合は、個別に4本で送ります。

1本で済ますか個別に送るかは、場合に合わせて使い分けた方が良いでしょう。

以下のようにすると、1本のメールを複数人に送れます。

Dim Str(4) As String
Str(0) = "email0@*****.co.jp"
Str(1) = "email1@*****.co.jp"
Str(2) = "email2@*****.co.jp"
Str(3) = "email3@*****.co.jp"
ActiveWorkbook.SendMail Recipients:=Str, Subject:="test"

または

ActiveWorkbook.SendMail Recipients:="email0@*****.co.jp,email1@*****.co.jp,email2@*****.co.jp,email3@*****.co.jp", Subject:="test"

最初のは#2の方の回答と似ていますが、#2の方の回答は1本のメール...続きを読む

Qエクセルマクロ メール作成

お世話になります。
メールの定期配信業務があり、簡略化のためマクロ作成しております。

WSHを使った構文を見つけましたので、以下のような構文を作りました。

<エクセルシート>
横に【宛先1(to)】【宛先2(cc)】【件名】【本文】【添付ファイルパス】
の順に並んでおり、列方向にはリストとなっています。

<Module>
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(行, 1).Text
宛先2 = Cells(行, 2).Text
件名 = Cells(行, 3).Text
本文 = Cells(行, 4).Value
添付 = Cells(行, 5).Text

sComd = "Mailto:" & 宛先1 & "?Subject=" & 件名 & "&body=" & 本文
Debug.Print sComd
CreateObject("WScript.Shell").Run sComd
行 = 行 + 1
Loop
End Sub

この状態で、複数メールを作成することはできましたが、不満点があり、御教示願いたく考えております。

mailto 以下の書き方が分からず困っているのが以下の点です。
1、CC(宛先2)を追加したい。
2、添付を追加したい。

また、本文の改行も反映できるようにしたいのですが、これは可能でしょうか?

複数件質問になってしまい恐縮ですが、よろしくお願い致します。

お世話になります。
メールの定期配信業務があり、簡略化のためマクロ作成しております。

WSHを使った構文を見つけましたので、以下のような構文を作りました。

<エクセルシート>
横に【宛先1(to)】【宛先2(cc)】【件名】【本文】【添付ファイルパス】
の順に並んでおり、列方向にはリストとなっています。

<Module>
Sub メール書き込み()

Dim 宛先1 As String
Dim 件名 As String
Dim 本文 As String
Dim 添付 As String
Dim 宛先2 As String
Dim 行 As Long, 行下端 As Long
Di...続きを読む

Aベストアンサー

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

QVBA エクセル メール送信 ハイパーリンクの貼り方

お世話になります。
首題の通り、エクセルに記述したマクロを使いメールを送りたいのですが、その際に文章の記述にハイパーリンクを張りたいのです。
例えば下記のモジュールですと、文章のBODYの部分には「OKWAVE」とだけ表示されますが、これをクリックすると[http://okwave.jp/]が開くようにしたいのですが、どのように記述すればよろしいのでしょうか?よろしくご指南くださいませ。

Sub test()
Dim strBody As String

Filename = "ハイパーリンクの貼り方???"
strBody = "OKWAVE"

Set myOL = CreateObject("Outlook.Application")
Set myMAIL = myOL.CreateItem(0)
With myMAIL
.to = "123@123.GOM"
.Subject = Filename
.body = strBody
.display
'.send
End With
Set myMAIL = Nothing
Set myOL = Nothing
End Sub

お世話になります。
首題の通り、エクセルに記述したマクロを使いメールを送りたいのですが、その際に文章の記述にハイパーリンクを張りたいのです。
例えば下記のモジュールですと、文章のBODYの部分には「OKWAVE」とだけ表示されますが、これをクリックすると[http://okwave.jp/]が開くようにしたいのですが、どのように記述すればよろしいのでしょうか?よろしくご指南くださいませ。

Sub test()
Dim strBody As String

Filename = "ハイパーリンクの貼り方???"
strBody = "OKWAV...続きを読む

Aベストアンサー

こんにちは。

返事が遅くなりしまた。

(1)
a) Msg = "<A HREF=;http://google.co.jp/><b>goole検索</b></A>"

b) Msg = "<A HREF=""http://google.co.jp/""><b>goole検索</b></A>"
は何が違うんでしょうか?

VBAで書く場合は、b)側が正しいです。理由は、VBAでは、素のコードの場合は、String型の変数の中に代入されるので、コードの中では、一個の「"」はエラーが出ると思います。うまく書けているか、Debug.Print でチェックしてみると良いです。リンク先では、b)で書かれていると思います。

(2)は、私は、CSS 自体はインラインで埋め込めば可能だと思います。しかし、フォームまでは書いたことがありませんが、可能・不可能なら、こちらも可能だと思います。ただし、相手側のメールで、セキュリティが働いたら、意味がありません。メールのマナーとしては、あまり良くないようですから、どこかのウェブサイトに飛ばせて、そこが使うようにしたらいかがですか?

HTMLメールの制作時に気をつけたい9つのポイント
http://coliss.com/articles/build-websites/operation/work/879.html

こんにちは。

返事が遅くなりしまた。

(1)
a) Msg = "<A HREF=;http://google.co.jp/><b>goole検索</b></A>"

b) Msg = "<A HREF=""http://google.co.jp/""><b>goole検索</b></A>"
は何が違うんでしょうか?

VBAで書く場合は、b)側が正しいです。理由は、VBAでは、素のコードの場合は、String型の変数の中に代入されるので、コードの中では、一個の「"」はエラーが出ると思います。うまく書けているか、Debug.Print でチェックしてみると良いです。リンク先では、b)で書かれていると思います。

...続きを読む

QExcelVBAでOutlookにセル内容を送る

いつもすいません。本日はExcelVBAでOutLookを操作する件です。

Excelのあるセルの内容を、書体やフォントの大きさ、色などをそのままにして
OutLookのメール本文に設定できないでしょうか? 要は、「セルを選択~コピー」
「Outlookのメール本文で貼り付け」という作業をしたいんです。

現状のExcel-VBAのコードは

Set M = AP.createitem(0) 'OutLookの起動
M.bodyformat = 3 'テキストメールを指示
M.To = Work_A '宛先
M.Subject = Work_T '件名
M.body = Work_C '本文
M.display 'メールを表示

こんな感じで、「Work_C」には「Range("A1").Value」でデータを与えているために、
現状テキストデータしか送られてないんです。

どうすれば「M.body」に「Range("A1") 」の書式を含めたデータを与えられますか?
出来れば、HTMLのコードを書かずに何とかしたいんですけど・・・。

いつもすいません。本日はExcelVBAでOutLookを操作する件です。

Excelのあるセルの内容を、書体やフォントの大きさ、色などをそのままにして
OutLookのメール本文に設定できないでしょうか? 要は、「セルを選択~コピー」
「Outlookのメール本文で貼り付け」という作業をしたいんです。

現状のExcel-VBAのコードは

Set M = AP.createitem(0) 'OutLookの起動
M.bodyformat = 3 'テキストメールを指示
M.To = Work_A ...続きを読む

Aベストアンサー

このあたりはやったことがないのですが、Web検索などで見た範囲では、ActiveInspector.WordEditorを使って貼り付けるという方法があるらしいです。

http://oshiete.goo.ne.jp/qa/7645239.html
http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/excel/cf4473d2-feef-430d-8005-74cd3cf61983

参考URL:http://oshiete.goo.ne.jp/qa/7645239.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報