ExcelVBAでOutlookにセル内容を送る

このQ&Aのポイント
  • ExcelVBAを使用してOutlookにセルの内容を送信する方法を教えてください。
  • Excelのセルの書式を保持したまま、Outlookのメール本文に貼り付ける方法を教えてください。
  • 現在のExcel-VBAのコードでは、テキストデータのみが送信されています。セルの書式を含めたデータをOutlookのメール本文に設定する方法を教えてください。
回答を見る
  • ベストアンサー

ExcelVBAで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のコードを書かずに何とかしたいんですけど・・・。

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

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.1

このあたりはやったことがないのですが、Web検索などで見た範囲では、ActiveInspector.WordEditorを使って貼り付けるという方法があるらしいです。 http://okwave.jp/qa/q7645239.html http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/excel/cf4473d2-feef-430d-8005-74cd3cf61983

参考URL:
http://okwave.jp/qa/q7645239.html
FEX2053
質問者

お礼

ヤヤコシイ質問に回答いただきましてありがとうございます。 実はどちらのURLも検索で見つけておりまして・・・。 結局、Excelの表をそのまま貼り付けるという1番目のURLの方法で なんとかすることにしました。リッチテキストのまま貼り付ける方法は どうしても見つけることが出来なかったのですが、これでも実用上の 用は足りる・・・と無理やり納得しています(苦笑)

関連するQ&A

  • ExcelVBAからメール本文を取得できません

    ExcelのVBAからOutlookのメール本文を取得できません。 エクセル上のデータを自動でOutlookのメール本文にとばすプログラムを作成しています。 Outlookを開き、宛先、件名までは転記できるのですが、本文転記の時にエラーがでます。 <本文転記のプログラム> If Range("A1") = 1 Then .body = Range("B1") ElseIf Range("A1") = 2 Then .body = Range("B1") & vbCrLf & Range("B2") ElseIf Range("A1") = 3 Then .body = Range("B1") & vbCrLf & Range("B2") & vbCrLf & Range("B3") Else .body = Range("B1") & vbCrLf & Range("B2") & vbCrLf & Range("B3") & vbCrLf & Range("B4") End if <エラー内容> (1)A1=1以外はエラーが出ない (2)A1=1の時にエラーが出るPCと、エラーが出ず正常に動くPCがある。 ※何れのPCもWindows10 <質問内容> エラーがでるPCと出ないPCがあるのはなぜでしょうか。 エラーが出ないようにするにはどうしたらよいでしょうか。 ご教示よろしくお願い致します。

  • エクセルでOutlookのメールを作成

    エクセルでOutlookのメールを作成しようとしています。 一応、以下のコードでできるようです。 質問は、メール本文中の ABC という文字だけを赤い太字にする方法です。教えてください。 Sub test01() Dim mi As Object ' MailItem Dim wdDoc As Object ' Word.Document Dim olApp As Object ' Outlook.Application Set olApp = CreateObject("Outlook.Application") Set mi = olApp.CreateItem(0) mi.To = "test@abc.co.jp" ' 送り先 mi.BodyFormat = 2 ' メールを HTML 形式にする mi.Display ' メールを表示する Set wdDoc = olApp.ActiveInspector.WordEditor ' メールの Word エディタを取得する wdDoc.Windows(1).Document.Range.Text = "本文本文本文本文本文1" _ & vbCrLf & "本文本文本文本文本文2" _ & vbCrLf & "本文ABC本文本文3" With wdDoc.Windows(1).Document.Range.Font .Name = "Meiryo UI" ' メール本文のフォントを "Meiryo UI" .Size = 11 ' フォントサイズを 11 に設定する End With End Sub

  • Outlookの文面を赤にする方法-エクセルVBA

    下記のようなコードでエクセルVBAでOutlookメールを作成する際、「期限:10月30日」の部分だけを赤にする方法を教えてください。 HTMLBodyというのを使うようなのですが、下記のコードの基本を変えず、対応する方法を教えてください。 Sub メール() 'Outlookの定義 Set myOutLook = CreateObject("outlook.application") Set Omail = myOutLook.CreateItem(olMailItem) 'メール作成 Omail.BodyFormat = 2 'メール形式 1=テキスト 2=HTML 3=リッチテキスト Omail.Subject = "意見記入のお願い" 'subject Omail.Body = Omail.Body & "いつもお世話になっております。" & vbCrLf Omail.Body = Omail.Body & "下記の申請が提出されました。" & vbCrLf Omail.Body = Omail.Body & "期限:10月30日" Omail.Display End Sub

  • エクセル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")をコピーし、 「リッチテキスト形式」で貼り付けたいのです。 どのようなコードに変えればよいのか教えていただけると助かります。 よろしくお願いいたします。

  • Outlook2013自動送信が出来ません。

    はじめまして、いつもお世話になっております。 excel vba の学習を始めたばかりの初心者です。 あるサイトで自動でoutloook2013を起動しファイルを添付して送信するマクロを 見つけ送信しようとしましたが、『コンパイルエラー』の為、上手くいきません。 どなたか画像をご確認いただき、修正方法をご教示いただきたく存じます。 よろしくお願いいたします。 以下がコンパイルエラーの出たプロシージャ(抜粋) 黄色のライン→Sub sendmail_sample1() 反転→Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 以下がコンパイルエラーの出たプロシージャ(全体) Sub sendmail_sample1() '---コード1|outlookを起動する Dim toaddress, ccaddress, bccaddress As String '変数設定:To宛先、cc宛先、bcc宛先 Dim subject, mailBody, credit As String '変数設定:件名、メール本文、クレジット、添付 Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成 Dim mailItemObj As Outlook.MailItem 'Outlookで使用するオブジェクト生成 '---コード2|差出人、本文、署名を取得する--- toaddress = Range("B2").Value 'To宛先 ccaddress = Range("B3").Value 'cc宛先 bccaddress = Range("B4").Value 'bcc宛先 subject = Range("B5").Value '件名 mailBody = Range("B6").Value 'メール本文 credit = Range("B7").Value 'クレジット '---コード3|メールを作成して、差出人、本文、署名を入れ込む--- Set outlookObj = CreateObject("Outlook.Application") Set mailItemObj = outlookObj.CreateItem(olMailItem) mailItemObj.BodyFormat = 3 'リッチテキストに変更 mailItemObj.To = toaddress 'to宛先をセット mailItemObj.CC = ccaddress 'cc宛先をセット mailItemObj.BCC = bccaddress 'bcc宛先をセット mailItemObj.subject = subject '件名をセット '---コード4|メール本文を改行する mailItemObj.Body = mailBody & vbCrLf & vbCrLf & credit 'メール本文 改行 改行 クレジット '---コード5|自動で添付ファイルを付ける--- Dim attached As String Dim myattachments As Outlook.Attachments 'Outlookで使用するオブジェクト生成 Set myattachments = mailItemObj.Attachments attached = Range("B9").Value '添付ファイル myattachments.Add attached attached = ThisWorkbook.Path & "outlookメール操作.xlsm" '---コード6|メールを送信する--- 'mailItemObj.Save '下書き保存 mailItemObj.Display 'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) '---コード7|outlookを閉じる(オブジェクトの解放)--- Set outlookObj = Nothing Set mailItemObj = Nothing

  • VBAでOutlookの文面の一部を赤にする方法

    記のようなコードでエクセルVBAでOutlookメールを作成する際、「期限:10月30日」の部分だけを赤にする方法を教えてください。 <font color = ""#ff0000"">" & "期限:10月30日" & "</font>" このようなコードを使うようなのですが、下記にどのように変更すれば動くのか教えてください。 Sub メール() 'Outlookの定義 Set myOutLook = CreateObject("outlook.application") Set Omail = myOutLook.CreateItem(olMailItem) 'メール作成 Omail.BodyFormat = 2 Omail.Subject = "意見記入のお願い" 'subject Omail.Body = Omail.Body & "いつもお世話になっております。" & vbCrLf Omail.Body = Omail.Body & "下記の申請が提出されました。" & vbCrLf Omail.Body = Omail.Body & "期限:10月30日" Omail.Display End Sub

  • Excelマクロでメール作成

    Excelマクロでメール作成 Sub aaa() Dim myOutLook Dim olmailItem Dim myitem Dim MyAttachments Set myOutLook = CreateObject("outlook.application") Set myitem = myOutLook.CreateItem(olmailItem) myitem.To = "メールアドレス" myitem.CC = "CCアドレス" myitem.Subject = "件名" myitem.Body = Sheets("シート1").Range("A1") '(1)(本文入力) というところまで出来ていて、'(1)(本文入力)の部分で悩んでいます。 本文をエクセルシート1のA1からC100の範囲でmyitem.Bodyに代入することは出来るでしょうか? (1)の記述だとA1セルを代入することは出来るのですが、Range("A1")をRange("A1:C3")とするとエラーが出てしまいます。 A1からC100の範囲は、空白ありセルデータとなっています。 基本的なことが解っていないための質問になってしまっているかも知れず、申し訳ないのですが、よろしくおねがいします。 OSはxp、Excelは2003、メーラーはOutlookです。

  • エクセルからOutlookのメールを作成

    エクセルからOutlookのメールを作成しているのですが、エクセルの表を画像として貼り付けたところファイルサイズが異常に大きくなってしまいました。 マクロは以下のようなものです。 Sub メール作成() Set App = CreateObject("Outlook.Application") Set objMAIL = App.CreateItem(0) With objMAIL .Display .BodyFormat = 3 Set Doc = .GetInspector.WordEditor End With ThisWorkbook.Worksheets("雛形シート").Range("A5:K35").CopyPicture Doc.Characters.Last.Paste Application.CutCopyMode = False End Sub このマクロで作成するとメールのサイズが2MBになってしまいます。 同じ作業を手動で行うと100kb以内になります。 どうにかファイルサイズを小さくする方法はないでしょうか。

  • エクセルからOUTLOOKでメール送信:2

    ●前回下記の質問を書かせていただきました。 ---------- エクセルに複数件のデータを記載してあります。 A列 に メールアドレス B列 に 件名 C列 に 本文A D列 に 本文B があるときに連続してメールを立ち上げ送信したいです。 いろいろ試してみましたが全く動きませんでした。 お手隙の際にでもお教え下さい。 マクロのサンプルソースがあると助かります。 よろしくお願いいたします。 ---------------- ●下記の回答をいただきメールの送信までは出来ました。 ---------------- Sub ボタン1_Click() Dim myOLApp As Object ' Dim myDATA As MailItem '### OUTLOOKのオブジェクトを作成後、メールを新規作成する。 Set myOLApp = CreateObject("Outlook.Application") For i=2 To 5 Set myDATA = myOLApp.CreateItem(olMailItem) '### メールの宛先、題名、本文、添付ファイルを設定する。 '(宛先のアドレス) myDATA.to = Range("A" & i).Value ' myDATA.CC = Range("D33").Value myDATA.Subject = Range("B" & i).Value myDATA.Body = Range("C" & i).Value & CHAR(10) & Range("D" & i).Value '### メールを送信 myDATA.Send Next '### お約束の後始末。 Set myDATA = Nothing Set myOLApp = Nothing End Sub こんな感じでしょうか。 For i=2 To 5 と 2行目から5行目です。 うまくいくようでしたら For i=2 To Range("A" &Rows.Count).End(xlUp).Row とでも変更してください。 なんといっても失敗すると大変なリスクが発生するプログラムです。 十分に実験してから運用してください。 ------------------------ ●メール送信は問題なくできておりましたが、  他のCSVリストよりエクセルにデータを引っ張ってきて  メールの送信を使用とした所 システムエラーです 80004005 エラーを特定できません。 と言ったエラーが出てくるようになりました。 多分他のシートから引っ張ってくる関数がジャマをしているとは思うのですが、 何かこのエラーを回避する方法はございますでしょうか? お教え下さい。

  • outlook expressへのテキストの貼り付け

    excelのセルのテキストをoutlook expressの新規メールの本文に貼り付けると、自動的にルビが振られてしまいますが、これをはずすにはどうしたらいいのでしょうか?分かる方よろしくお願いします。