-PR-
解決済み

VBA サンダーバードのメール自動作成

  • 困ってます
  • 質問No.7584768
  • 閲覧数8474
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 71% (60/84)

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

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

【仕様】
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に入っている文字列はすべてただの文字列とし、上記の例の場合にメールが途中で
途切れないようにする方法はありますでしょうか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 79% (496/625)

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

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

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

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

お礼率 71% (60/84)

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

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 43% (19/44)

このページに詳しく書いてます
https://developer.mozilla.org/ja/Command_Line_Options#Syntax_Rules

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

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

お礼率 71% (60/84)

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


このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

-PR-

ピックアップ

-PR-
ページ先頭へ