メール本文を

テキストファイルに吐き出すコードを書いている。 いつものようにネットをググってScripting.FileSystemObjectを作って、FileSystemObjectのCreateTextFileメソッドでファイルを作ってもらい、同じくFileSystemObjectのWriteメソッドで書き込むっていうコードを拾ってきて実装した。 大体上手く行くんだけど、たまぁに失敗する。 エラーは、『実行時エラー'5' プロシージャの呼び出し、または引数が不正です。』というもの。 別にメール本文が変なわけでもなさそう。 上手く行ったメールとダメだったメールの違いは見つけられない。 そこで、またググってみると、『unicodeからsjisに変換できない文字があると、書き込めないでエラーになるみたい。』というページを見つけた。 CreateTextFileメソッドのパラメータを調べると、第3引き数がTrueでUnicode ファイルを作成する、FalseでASCIIファイルを作成するとなっていることが分かった。 最初に拾ってきたコードは、FalseだったのでTrueに変えてみると、エラーにならずに上手く書き込める。 世の中、いろいろと面倒くさい。

コードはこんな感じ(変数宣言は割愛)

' 本文をテキストファイルにして書き込む Set fso = CreateObject("Scripting.FileSystemObject") ' With fso.CreateTextFile(FolderName & "Body.txt", True, False) ’ ASCIIコードだとダメ With fso.CreateTextFile(FolderName & "Body.txt", True, True) ’ Unicodeならおっけー .Write objMailItem.Body .Close End With ' オブジェクトの解放 Set fso = Nothing

--
のち

No comments: