🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

5912閲覧

Excelでメール送信→本文に特定セルの内容を表示したい

techiko

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/01/08 07:57

Excelでコマンドボタンクリックでメールを起動し
特定のセル(A1)の値をメール本文に挿入したいです。

メール画面を出すところまでは、探したコードでできたのですが
セルの値を挿入する方法がわからず、どのようなコードを入れたらいいのか
教えていただけないでしょうか?

Private Sub ボタン1_Click() 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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2021/01/12 00:36

メーラーは何を使われていますか?Outlookでしょうか。
techiko

2021/01/12 01:03

Outlook、Thunderbirdを使っているので メーラーを限定したくないのですが難しいでしょうか?
guest

回答1

0

ベストアンサー

メーラーによってコードが変わってきますので、ボタンを複数作成されるどして、
選べるようにするとよろしいかと思います。
詳細記述は以下リンクが参考になると思います。
Outlookの場合
【エクセルVBA】Outlookでメールを作成・送信する方法
サンダーバードの場合
エクセルVBAでサンダーバードからメールを送る方法|半自動化も可

-------------------------
すいません。普通にセル指定でいけそうでした。

vba

1 Arg = "mailto:メールアドレス?" & _ 2 "subject=お知らせ&" & _ 3 "body=" & Range("a1")

これだとA1の値が本文に追記されます。
わたしの環境ではサンダーバードがないのでうまくいくかご確認ください。

投稿2021/01/12 01:45

編集2021/01/12 05:39
radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

techiko

2021/01/12 05:28

ボタンを分けて作るしかないのですね… どうもありがとうございました!
techiko

2021/01/13 08:09

確認が遅くなり申し訳ありません。 解決済みにしたにもかかわらず、どうもありがとうございました。 いただいたコードでやりたいことが形になりましたが、 Thunderbirdは「クラスが登録されていません」と出て立ち上がりませんでした。 解決策をもう少し調べてみます。 どうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問