• ベストアンサー

VBA:Excel の表を含んだセル範囲を Outlook にコピペして送信したい

Excel 2003 と Outlook 2003 を使用しています。 Excel の表を含んだセル範囲を Outlook にコピペして送信したいのですが、 定型業務化しているので、Excel のマクロで処理したいと考えています。 セルの値をテキスト形式のメッセージに設定するプログラムは作成経験があるのですが、 HTML形式のメッセージの場合は全く初めてでして、方法(メソッドなど)が分かりません。 HTMLBody プロパティに html 文を設定すればよさそうな気がしますが、Excel のデータを マクロで html 文に生成する方法も分かりません。 何か、サンプルプログラムやヒントがございましたら、ご教授ください。 よろしくお願いします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。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

GreatDragon
質問者

お礼

ご回答ありがとうございます。 事情により数日PCに触ることが出来ず、お返事が遅くなり申し訳ありませんでした。 これから、ご提示の(No4の)ページをじっくり読んでみたいと思います。

GreatDragon
質問者

補足

こんなソフトがあったんですね。素晴らしいです。 コードが読めればさらに良かったですが・・・

その他の回答 (3)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

#3 です。 すみません。トップページのリンクを間違えました。 こちらです。 http://www.geocities.jp/elie_world/

GreatDragon
質問者

お礼

こちらの欄をお借りしてご回答いただいた皆様にお礼申し上げます。 1.VBA で HTML ファイルが読めるとは最初は考えていませんでした。中身はテキストファイル形式なので   冷静に考えれば読み込み出来ることが分かったはずなのですが・・・未熟でした。 2.今回は利用しませんが、Basp21 の SendMail は何かの機会に利用できそうです。 3.同じような事考えている人いたのですね。私にはご紹介いただいたソフトの作者のような技術力が無いのが残念です。 また、よろしくお願いします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 まず、ヒントだけになってしまいますが、sendmail を使えばよいと思います。ただ、MAPIを使っても、Outlookなどを通すと、一旦、Outlookにプールされます。ですから、以下にあるBasp21 のコンポーネントの中のSendMail のダイナミックリンクライブラリを使えば、直接送信でき、かなり自由な取り扱いが出来ます。だいたい、VB/VBAを扱う人たちは、Basp21のSendMailを使うかと思います。VB用のコードをVBAに転用すれば、思ったようになるかと思いますし、内容を丹念に読めば、Excelのサンプルも出てきます。 そうではなく、あくまで、Outlook で送信するのでしたら、インターネット検索すれば、サンプルコードはかなり出てくるはずです。 Baba Centerfolds

参考URL:
http://www.hi-ho.ne.jp/babaq/index.html
GreatDragon
質問者

お礼

ご回答ありがとうございます。 事情により数日PCに触ることが出来ず、お返事が遅くなり申し訳ありませんでした。 これから、ご提示のページをじっくり読んでみたいと思います。

GreatDragon
質問者

補足

ご提示のページを参考に SendMail を試しまして、うまく送信は出来ました。 出来れば、Excel の表が(HTML メールのように)初めからメールで見れる状態で送信したいのですが・・・ > そうではなく、あくまで、Outlook で送信するのでしたら、インターネット検索すれば、サンプルコードはかなり出てくるはずです。 テキスト形式の例はたくさんありました。HTMLBody プロパティにタグを直接記述する例もありました。 しかし、Excel の表を HTML メールで送信する VBA コードの例は見つかりませんでした。 私の探し方が悪いだけかもしれませんが・・・

回答No.1

ファイル>webページとして保存 はダメですか?

GreatDragon
質問者

お礼

ご回答ありがとうございます。 また、お返事が遅くなり申し訳ありません。

GreatDragon
質問者

補足

ご提示のヒントを基に試行錯誤してみました。 下記のようなコードを作成しテストしました。 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

関連するQ&A

  • Excel-VBAを用いてのOutlook2003でのメール送信

    先週メールソフトをOutlook2000からOutlook2003にUpgradeしました。 Outlook オブジェクト モデルを使用しているプログラムを実行して Send メソッドを呼び出すとき、プログラムがメッセージを送信しようとしていることを通知する警告メッセージ(このメッセージの送信を許可するかどうか、[はい] [いいえ] の両方のボタン)が表示されるようになりました。[はい] ボタンは、警告メッセージの表示後 5 秒経過するまで使用不可の状態になっています。 この警告メッセージを出さないようにするためにはどうしたらいいでしょう?因みにセキュリティーレベルを変更してもダメでした。 OUTLOOK2000ではこのような警告メッセージがでなかったのでスムーズに仕事ができたので、大変困っています。

  • Excel2016セルのコピペの形式について

    WIN 10 Excel2016セルのコピペで セルをコピーして別のセルに張り付ける場合 「形式を選択して貼り付ける(S)を選ぶと◎すべて(A)に自動的にチエックが入っていますが 〇値と数値の書式(U)にその都度チェックを入れておりますが開いた時にあらかじめ選択されているような設定変更が出来るようであればご教授いただきたいと思います

  • エクセルで特定のセル(範囲)を選択出来なくするには?

    エクセルで特定のセル上(範囲内)でクリックしても、そのセルを選択出来ない様に設定したいのですが、やり方がよくわかりません。 本でいろいろ調べてみましたが、「セルの保護」とは違うようです。 よくこの様にしてあるエクセルのソフトを見るのですが、そういう設定をしたいのです。 VBAマクロのプログラム上でそのように設定するのでしょうか? (マクロはある程度わかります) よろしければ御教示下さい。

  • VBAで選択範囲の全てのセルの削除の仕方

    ご教授お願いいたします。 Excel2007のVBAでseetに挿入したボタンのマクロで マウスで選択した全てのセルを削除するようにしたいのですが・・・ ActiveCell.Delete と入力してマクロを実行してもマウスで選択したセルの 一つ目のセルしか削除されません・・・ 選択したすべてのセルに適用するようにするためには どのようなメソッドを使えば良いのでしょうか? 使い始めたばかりなので全くわかりません・・・ よろしくお願いいたします。

  • Excel2007のVBAについて

    Excel2007のVBAについて Excel2007以前では「マクロの記録」を実行して罫線や図形の描写を行って、「記録終了」を行うと作業していたコードが記述され、それを加工したりして使っていましたが、Excel2007で同じように行ってもコードが記述されてませんでした。 セルの操作等はコードが記述されていました。 どこか、私の操作方法が間違っているのでしょうか。また2003のようにコードを記述させる方法が別途あるのでしょうか、よろしくお願いします。 関係ないとおもいますが、 「Excelのオプション」で「開発タブをリボンに表示する」はチェック入れてあります。 「マクロの設定」では「すべてのマクロを有効にする」にチェックしています。

  • excel_特定のセル範囲で同じ文字列が有ったら色

    マクロ初心者です。 excel2002マクロ_特定のセル範囲で同じ文字列が有ったらその数によりセルを色分けしたい 特定のセル範囲で文字列が入っているところと空欄のところがあります。 空欄のところには、後から文字列が入るところと空欄のままのところがあります。 その範囲内で同じ文字列があった場合、2個の時、3個の時、4個の時、5個、6個、7個、8個、9個、10個以上の時に、それぞれ決めておいた色でセルを色分け表示したいです。 文字列の順番はランダムです。 excel2002なので、3種類までなら条件付き書式で設定できるのですが、それを超える場合は設定できません。 それで、これをマクロで設定できるでしょうか。 条件付き書式で設定した場合は、文字列を入力した時点でセルの色はすぐに反映されますが、マクロの場合もそのようにすることは可能でしょうか。 よろしくお願いします。

  • エクセルでオブジェクト内の文字をセルへコピペする

    エクセルでオブジェクト内の文字をセルへコピペする方法は無いでしょうか。(またはその反対)

  • 選択したセルに特定の文字、自動的に他セルにコピペ

    選択したセル内((1))に、特定の文字が入力された場合、 他の場所の選択したセル((2))に、選択したセル((1))の中の一部を 他の場所の選択したセルに自動的にコピーされる方法が知りたいです。 (数字データだけではなく、書式・色も自動的にコピペされる) マクロor関数、どちらでも構いませんが、 私、マクロは全くの素人です。 上記の文が「選択、選択、、、と、意味不明かと思うのですが添付したデータ を見てください。 B11~B18の中に「予約」と入力された場合、そのセル(=B12)からH12までだけを セル(B1~B7)のセルの間のいずれかに自動表示させたいのです。 VLOOKUP関数でしょうか? それとも、マクロで自分でB1~B7を選択して、マクロの実行をさせる方法でしょうか?

  • Excelマクロ 統合セルの連続コピペ

    Excelマクロの初心者です 現在以下のことをマクロで行おうと思ってます。 ファイルAのシートAのC11に入ってる文章を同じファイル内にあるシート2のA46:F51の統合してあるセルにコピペします。 そして次にファイルAのシートD11に入ってる文章をシート3のA46:F51の統合してあるセルにコピペします。 このような作業をファイルAのAC11まで続けたいです。 どなたか教えて頂けないでしょうか? よろしくお願いします。

  • エクセルで、列や行の幅などセルのサイズを変えないままコピペ・・・

    エクセルで、列や行の幅などセルのサイズを変えないままコピペしたいのですが。 シートまるごとコピペするとできるのですが、一部だけをコピペすると、どうしてもセルが基のサイズに戻ってしまいます。 同じシートには「形式を指定して異動」でできたのですが、違うブックに異動することがどうやってもできません。 どうにかして一部分だけをサイズを変えずにコピペすることはできないでしょうか? どなたかお助けください。

専門家に質問してみよう