- ベストアンサー
VBA:Excel の表を含んだセル範囲を Outlook にコピペして送信したい
Excel 2003 と Outlook 2003 を使用しています。 Excel の表を含んだセル範囲を Outlook にコピペして送信したいのですが、 定型業務化しているので、Excel のマクロで処理したいと考えています。 セルの値をテキスト形式のメッセージに設定するプログラムは作成経験があるのですが、 HTML形式のメッセージの場合は全く初めてでして、方法(メソッドなど)が分かりません。 HTMLBody プロパティに html 文を設定すればよさそうな気がしますが、Excel のデータを マクロで html 文に生成する方法も分かりません。 何か、サンプルプログラムやヒントがございましたら、ご教授ください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。KenKen_SP です。 これはどうですか? 【Elie_World : 計算機システムのマネジメント】 http://www.geocities.jp/elie_world/management_e-system/index.html 上記サイト内のコンテンツ 【Elie_ExcelRangeHtml_OutlookMail Ver 1.0.0】 www.geocities.jp/elie_world/available_software/elie_excelrangehtml_outlookmail/index.html
その他の回答 (3)
- KenKen_SP
- ベストアンサー率62% (785/1258)
#3 です。 すみません。トップページのリンクを間違えました。 こちらです。 http://www.geocities.jp/elie_world/
お礼
こちらの欄をお借りしてご回答いただいた皆様にお礼申し上げます。 1.VBA で HTML ファイルが読めるとは最初は考えていませんでした。中身はテキストファイル形式なので 冷静に考えれば読み込み出来ることが分かったはずなのですが・・・未熟でした。 2.今回は利用しませんが、Basp21 の SendMail は何かの機会に利用できそうです。 3.同じような事考えている人いたのですね。私にはご紹介いただいたソフトの作者のような技術力が無いのが残念です。 また、よろしくお願いします。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 まず、ヒントだけになってしまいますが、sendmail を使えばよいと思います。ただ、MAPIを使っても、Outlookなどを通すと、一旦、Outlookにプールされます。ですから、以下にあるBasp21 のコンポーネントの中のSendMail のダイナミックリンクライブラリを使えば、直接送信でき、かなり自由な取り扱いが出来ます。だいたい、VB/VBAを扱う人たちは、Basp21のSendMailを使うかと思います。VB用のコードをVBAに転用すれば、思ったようになるかと思いますし、内容を丹念に読めば、Excelのサンプルも出てきます。 そうではなく、あくまで、Outlook で送信するのでしたら、インターネット検索すれば、サンプルコードはかなり出てくるはずです。 Baba Centerfolds
お礼
ご回答ありがとうございます。 事情により数日PCに触ることが出来ず、お返事が遅くなり申し訳ありませんでした。 これから、ご提示のページをじっくり読んでみたいと思います。
補足
ご提示のページを参考に SendMail を試しまして、うまく送信は出来ました。 出来れば、Excel の表が(HTML メールのように)初めからメールで見れる状態で送信したいのですが・・・ > そうではなく、あくまで、Outlook で送信するのでしたら、インターネット検索すれば、サンプルコードはかなり出てくるはずです。 テキスト形式の例はたくさんありました。HTMLBody プロパティにタグを直接記述する例もありました。 しかし、Excel の表を HTML メールで送信する VBA コードの例は見つかりませんでした。 私の探し方が悪いだけかもしれませんが・・・
- sputnik_1
- ベストアンサー率25% (1/4)
ファイル>webページとして保存 はダメですか?
お礼
ご回答ありがとうございます。 また、お返事が遅くなり申し訳ありません。
補足
ご提示のヒントを基に試行錯誤してみました。 下記のようなコードを作成しテストしました。 HTM ファイルを生成しないで実行できればなお良いのですが・・・ Public Sub Test1() Dim objOutlook As Object Dim objMail As Object Dim MyLine As String Dim MyBody As String With ActiveWorkbook.PublishObjects.Add(xlSourceRange, "Test123.htm", ActiveSheet.Name, ActiveSheet.UsedRange.Address) .Publish (True) .AutoRepublish = False End With Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(olMailItem) MyBody = "" Open "Test123.htm" For Input As #1 Do Until EOF(1) Line Input #1, MyLine MyBody = MyBody & vbCrLf & MyLine Loop With objMail .HTMLBody = MyBody .Display End With Close #1 Set objMail = Nothing Set objOutlook = Nothing End Sub
お礼
ご回答ありがとうございます。 事情により数日PCに触ることが出来ず、お返事が遅くなり申し訳ありませんでした。 これから、ご提示の(No4の)ページをじっくり読んでみたいと思います。
補足
こんなソフトがあったんですね。素晴らしいです。 コードが読めればさらに良かったですが・・・