
いつもお世話になってます。
サンダーバードでメールを自動作成しようと思い、回答者さんのアドバイスで以下のコードを
作成しました。
【仕様】
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に入っている文字列はすべてただの文字列とし、上記の例の場合にメールが途中で
途切れないようにする方法はありますでしょうか?
No.2ベストアンサー
- 回答日時:
>Bodyst = honbun
>Shell sPath & "to=" & Mailad & "," & _
> "subject=""" & Subjct & """," & _
> "body=""" & Bodyst & """"
Bodyst = Replace(honbun, "&", "&")
Shell sPath & "mailto:" & Mailad & "?" & _
"subject=""" & Subjct & """&" & _
"body=""" & Bodyst & """"
..こんな感じではどうでしょう。
『&』つなぎにして、本文内に『&』があれば全角にしておく対処。
『,』と『&』とどちらが使用する頻度が高いかな、という点と
『,』と『&』全角にした時の違和感を考えて、そこは好みで
『,』でも構わないかと思います。
ありがとうございます。
頂いたアドバイス通り、以下の構文で問題なく動作しました。
(&ではなく、カンマを全角にする対応としました)
Bodyst = honbun
Bodyst = Replace(honbun, ",", ",")
Shell sPath & "to=" & Mailad & "," & _
"subject=""" & Subjct & """," & _
"body=""" & Bodyst & """"
No.1
- 回答日時:
このページに詳しく書いてます
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" のように引用符 (') でくくってください。
とありますので、「引用符 (') 」で本文を囲んではどうでしょうか?
回答ありがとうございます。
頂いたアドバイスで、カンマを含む文字が切り離されずに入力できました。
ただ、当たり前ですが、メール本文に引用符(')がつくようになってしまいまして
こいつを取り除きたいのですが、そんなことは可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
VBA 別ブックから条件に合うも...
-
GridViewの行選択イベントを発...
-
クリップボードの内容を変数に...
-
エクセルの取り消し線を検出す...
-
マクロについて質問です 範囲内...
-
複数セルに〇印をつけるマクロ
-
VBA サンダーバードのメール自...
-
Excel VBA コンボボックスで空...
-
マウスを乗せたときにセルの色...
-
【VB.NET】DataGridViewセルの...
-
Excel_VBAについて質疑です。(...
-
Excel 入力規則のリストのカー...
-
VB2005 DATAGRIDVIEWでの矢印キ...
-
Excelマクロで空白セルの大小比...
-
エクセルのセルの中の,よりも前...
-
エクセル: セルの枠を超えて表示
-
エクセルのセル内に全角数字を...
-
エクセル:マクロ「Application...
-
EXCELで特定のセルに表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
Excel VBA コンボボックスで空...
-
VBA 別ブックから条件に合うも...
-
Excelマクロで空白セルの大小比...
-
クリップボードの内容を変数に...
-
Excel 入力規則のリストのカー...
-
【VBA】セルが空白の場合に処理...
-
複数セルに〇印をつけるマクロ
-
【VB.NET】DataGridViewセルの...
-
マクロについて質問です 範囲内...
-
DataGridViewでセルを結合したい
-
VBA サンダーバードのメール自...
-
VBA 文字列を1文字ずつ調べて"...
-
JTableにおけるセルの結合について
-
VBAを用いて特定の範囲のセルの...
-
マウスを乗せたときにセルの色...
-
Excel VBA 多重ループについて
-
FireFoxについて
-
VBAの参照方法について
-
Goolgeスプレッドシートの内容...
おすすめ情報