NotesメールをExcel VBAで自動作成したときの宛先文字数制限(失敗談)

今から4年ほど前のこと。勤め先の、とある定例業務は ↓ こんな感じだった。

  1. Excel の書類に仕様値を入力。
  2. 書類を管理する番号で、1.を名前を付けて保存。
  3. 別部門の担当者へ、2.を添付してメール送信。

1~3は、毎回ほぼ決まり切った内容であるため、Excel VBAで自動化することにした。
f:id:Infoment:20190511195038p:plain

VBAでNotesメールを作成・送信する方法は、調べた結果こちらに行きついた。
belie.c.ooco.jp
そこで早速こちらを参照というか、業務用ファイルに丸々移植して、目的を達成することが出来た(大変助かりました、ありがとうございます)。

そして時は流れ、つい先日のこと。上記ツールを使用中の部門から、こんな相談を受けた。

「CCに宛てたアドレスが、途中で尻切れになってしまうんですが、解決できませんか?」

調べてみると、確かに途中で途切れてしまう。どうしてだろう。

Dim CC_Address As String
    ' 中略
    wkNDoc.CopyTo = CC_Address

CC_Addressには、「アドレス1, アドレス2・・・」のように、実際にCC欄にセットされるアドレスが文字列として入っている。
散々調べてみたが分からず、改めて参照したコードを拝見してみると、次のように書かれていた。

    wkNDoc.CopyTo = Array("xxx@xxx")

最初に参照した時は、気にも留めていなかったのだが、なぜか文字列ではなく配列で書かれている。これはひょっとして?と思い、以下のようにコードを修正した。

Dim CC_Arr As Variant
    ' 中略
    ' CC_Arr=Array("アドレス1", "アドレス2", ・・・)
    wkNDoc.CopyTo = CC_Arr

すると、配列内のアドレスの総文字数が何文字であろうと、きちんとセットされるようになった。正確に引用せず、勝手な解釈で内容を変えたことが、今回の真因だったようだ。

ということで、引用は正しく行うべしと、猛省した次第です。

参考まで。