プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になってます。

サンダーバードでメールを自動作成しようと思い、回答者さんのアドバイスで以下のコードを
作成しました。

【仕様】
sheet2のA列に、メールの宛先と本文の文字列が下方向に並んでおり、ループしながら宛先と本文を新規メールに送っていく。

Dim sPath As String
Dim Mailad As String
Dim Subjct As String
Dim Bodyst As String

Do Until Sheets("sheet2").Range("J" & cnt).Value = syuryono + 1

If Sheets("sheet2").Range("I" & cnt).Value = "アドレス" Then
'メルアドを取得
meruado = Sheets("sheet2").Range("A" & cnt).Value
cnt = cnt + 1

'メルアドから下の行を本文として取得
honbun = ""
Do
honbun = honbun & Sheets("sheet2").Range("A" & cnt).Value
honbun = honbun & "%0a"
cnt = cnt + 1
Loop Until Sheets("sheet2").Range("I" & cnt - 1).Value = "エンド"

'文字数カウント
a = Len(honbun)

'メール作成
sPath = """C:\Program Files\Mozilla Thunderbird\thunderbird.exe"" -compose "
Mailad = meruado
Subjct = Sheets("説明").Range("A7").Value
Bodyst = honbun
Shell sPath & "to=" & Mailad & "," & _
"subject=""" & Subjct & """," & _
"body=""" & Bodyst & """"

Else
cnt = cnt + 1

End If
Loop

で、質問なんですが、

'メルアドから下の行を本文として取得
honbun = ""
Do
honbun = honbun & Sheets("sheet2").Range("A" & cnt).Value
honbun = honbun & "%0a"
cnt = cnt + 1
Loop Until Sheets("sheet2").Range("I" & cnt - 1).Value = "エンド"

上記の部分で本文を作っていくときに、本文中に「,」が入っていると、そこで本文が途切れてしまいます。
例えば、A2セルに「りんご」A3セルに「みかん」とある場合、変数honbunは「りんご%0aみかん」となり
メール本文は「りんご(改行)みかん」となりますが、A2セルが「りんご」A3セルが「み,かん」の場合
メール本文が「りんご(改行)み」で終わってしまいます。

正規表現?的な文字が入っていると、メーラーのbodyに渡す時に途切れちゃうのかなという感じです。

変数honbunに入っている文字列はすべてただの文字列とし、上記の例の場合にメールが途中で
途切れないようにする方法はありますでしょうか?

A 回答 (2件)

>Bodyst = honbun


>Shell sPath & "to=" & Mailad & "," & _
>       "subject=""" & Subjct & """," & _
>       "body=""" & Bodyst & """"

Bodyst = Replace(honbun, "&", "&")
Shell sPath & "mailto:" & Mailad & "?" & _
       "subject=""" & Subjct & """&" & _
       "body=""" & Bodyst & """"

..こんな感じではどうでしょう。
『&』つなぎにして、本文内に『&』があれば全角にしておく対処。

『,』と『&』とどちらが使用する頻度が高いかな、という点と
『,』と『&』全角にした時の違和感を考えて、そこは好みで
『,』でも構わないかと思います。
    • good
    • 1
この回答へのお礼

ありがとうございます。
頂いたアドバイス通り、以下の構文で問題なく動作しました。
(&ではなく、カンマを全角にする対応としました)
Bodyst = honbun
Bodyst = Replace(honbun, ",", ",")
Shell sPath & "to=" & Mailad & "," & _
       "subject=""" & Subjct & """," & _
       "body=""" & Bodyst & """"

お礼日時:2012/07/13 14:41

このページに詳しく書いてます


https://developer.mozilla.org/ja/Command_Line_Op …

構文規則の項目を参照すると、
>複数のメッセージオプションは、例えば "to=foo@nowhere.net,subject=cool page" のように、カンマ (,) で切り離します。カンマの前後に空白 ( ) を入れてはいけません。
これに反応して切り離されているのでは?

>ひとつの欄に複数の値を割り当てるには、"to='foo@nowhere.net,foo@foo.de',subject=cool page" のように引用符 (') でくくってください。
とありますので、「引用符 (') 」で本文を囲んではどうでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
頂いたアドバイスで、カンマを含む文字が切り離されずに入力できました。
ただ、当たり前ですが、メール本文に引用符(')がつくようになってしまいまして
こいつを取り除きたいのですが、そんなことは可能でしょうか?

お礼日時:2012/07/12 10:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています