
いつもお世話になってます。
サンダーバードでメールを自動作成しようと思い、回答者さんのアドバイスで以下のコードを
作成しました。
【仕様】
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
セルデータの有無を判断して行...
-
Excel 入力規則のリストのカー...
-
vba、targetのRow,Colomnの値取得
-
マクロについて質問です 範囲内...
-
Excel VBA コンボボックスで空...
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】オートフィルターの...
-
vba テキストボックスとリフト...
-
【マクロ】A列にある、日付(本...
-
エクセル: セルの枠を超えて表示
-
エクセル:マクロ「Application...
-
エクセルでの計算式で求められ...
-
Excelに入力した個々の日付の数...
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
エクセルのアポストロフィを一...
-
エクセルのセル内の余白の設定...
-
エクセルのパーセンテージで、...
-
EXCELで特定のセルに表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
VBA 別ブックから条件に合うも...
-
クリップボードの内容を変数に...
-
Excel VBA コンボボックスで空...
-
Excel 入力規則のリストのカー...
-
GridViewの行選択イベントを発...
-
【VB.NET】DataGridViewセルの...
-
エクセルの取り消し線を検出す...
-
マウスを乗せたときにセルの色...
-
VBA サンダーバードのメール自...
-
【VBA】セルが空白の場合に処理...
-
Excelマクロで空白セルの大小比...
-
エクセル チェックボックスの...
-
エクセルVBA 計算範囲を変更する。
-
複数セルに〇印をつけるマクロ
-
VBA 文字列を1文字ずつ調べて"...
-
マクロについて質問です 範囲内...
-
vba、targetのRow,Colomnの値取得
-
DataGridViewでセルを結合したい
-
vbaで色付けされたセルを除外し...
おすすめ情報