テキストファイルに吐き出すコードを書いている。
いつものようにネットをググって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:
Post a Comment