[[20130913101931]] 『エクセル文章をメール本文にコピーしたとき改行さ』(ゆみ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセル文章をメール本文にコピーしたとき改行されない』(ゆみ)
初心者です。
使用している環境はWindows 7、Excel2010です。
エクセルで作成した内容をコピーしてメールを送るようなVBAを作成しているのですが、
outlookにコピーした際改行されず、本文が読みにくくて困っております。
以下のようなコードです。
ご指摘頂けますと幸いです。

Sub TEXT_SEND_MAIL()
Dim MyData As DataObject
Dim maleTo As String
Dim ccTo As String
Dim bccTo As String
Dim mySubject As String
Dim URL As String
Set MyData = New DataObject

maleTo = "aaa@aaa.ne.jp"
ccTo = "aaa@aaa.ne.jp"
bccTo = "aaa@aaa.ne.jp"
mySubject = "テスト"
Sheets(1).Activate
Dim buf As String
Dim CB As New DataObject
Dim objCell As Range

    Worksheets(1).Range("A6:B25").Select
    buf = ""
    For Each objCell In Selection
        buf = buf & vbNewLine & objCell.Value & vbNewLine
    Next
    With CB
        .SetText buf
        .PutInClipboard
    End With

MyData.GetFromClipboard
URL = "" & maleTo & "?Subject=" & mySubject & _

      "&cc=" & ccTo & "&bcc=" & bccTo & "&body=" & MyData.GetText(1)
ActiveWorkbook.FollowHyperlink Address:=URL, NewWindow:=True
Set MyData = Nothing
End Sub


 vbNewLineを
 Chr(13) + Chr(10)
 に変えてもだめですかね?
 (稲葉)

稲葉サマ ご回答ありがとうございます。
試してみたものの、改行されず・・・
うーん、何が悪いのだろう。
(ゆみ)


 ネット検索してみると、改行コード部分を "%0d%0a" でできるという話がありました。
 (Notes ではうまくいきませんでしたが Outlook ではできるのかな)

 それから、URL の先頭は "mailto:" ... ですね。
 あとクリップボードを使う必要は無いような気がしますが・・・。

 # % 抜けていたので修正
 (Mook)


vbNewLineの代わりに "%0D%0A" かな?
Outlookの設定がHTMLメールになっているならば、代わりに"<br>"とか?
(???)

 Notes では動かなかったけれど一応サンプル(改行コードなしでは動きました。)
 (Mook)
 Sub Sample()
    Const mailTo = "aaa@aaa.ne.jp"
    Const ccTo = "aaa@aaa.ne.jp"
    Const bccTo = "aaa@aaa.ne.jp"

    Dim mySubject As String
    mySubject = "テスト"

    Dim URL As String
    URL = "mailto:" & mailTo & "?Subject=" & mySubject & _
          "&cc=" & ccTo & "&bcc=" & bccTo & "&body="

    Dim objCell As Range
    For Each objCell In Worksheets(1).Range("A6:B10")
        URL = URL & objCell.Value & "%0d%0a"
    Next
    ActiveWorkbook.FollowHyperlink Address:=URL, NewWindow:=True
 End Sub


皆様、ありがとうございます!!

"%0d%0a"で改行できました!
とても助かります!

一つわからなかったのは、
Mook様に指摘頂いた
あとクリップボードを使う必要は無いような気がしますが・・・。
これは何故でしょうか?

outlookにエクセル文章をコピーする際、クリップボード経由でなければ出来ないと思っておりました。
教えて頂けますと幸いです。
(ゆみ)


 アプリケーション間でデータをやり取りするときにクリップボードを使用するのはひとつの
 方法ですが、オブジェクトとして扱えればその中で受け渡すこともできます。

 もっとも今回は、EXCEL 内だけの話で OUTLOOK で貼り付け処理をしていないですから。
 ハイパーリンクを実行した後、メールが起動するのは OS の機能です。
 (Mook)

 うちで使ってるやつ
 HTMLメールの方が色々使いやすくて・・・
 Sub メール作成()
    Dim x As String  '件名
    Dim y As String  '宛先
    Dim z As String  '本文

    x = "テストメール"

    y = "鈴木 一郎;田中 次郎"

    z = "テストメールです。" & "<br>" & _
         "このメールには返信しないでください。"

    Call メール送信(x, y, z)
End Sub

Sub メール送信(ByVal SBJ As String, ByVal MT As String, ByVal BD As String)

    Dim OAP As Object      'アウトルックのアプリケーションオブジェクト
    Dim OLM As Object      'メールのオブジェクト

    'アプリケーションオブジェクトの作成
    With CreateObject("Outlook.Application").CreateItem(0)
        .To = MT        '宛先
        .Subject = SJ   '件名
        .HTMLBody = BD  '本文の代入 HTMLメールにすることで、<br>等使える
        .Send           '直接送信箱行き
    End With

End Sub

 (稲葉)

Mook様、稲葉様

ありがとうございます!
なるほどです・・・Excel側にHTMLを書いておけば編集しやすそうだし、
使い勝手よさそうですね!

参考に致します!
(ゆみ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.