2011年11月20日日曜日

step4.5 添付ファイルを連番で保存

step4では、Outlookで受信した添付ファイルをとりあえず保存する方法を紹介しました。
これはこれで便利だと思います。
ただ、これは結構大ざっぱな作りです。

というのも、「SaveAs」は同一のファイル名のファイルが存在する場合上書き保存になってしまうからです。
ですので、一度に同一名ファイルのものを処理しようとすると最後に処理したファイルのみがポツンとフォルダに残った状態に。






NTTフレッツ光





いろいろ回避の仕方はありますが、その一つがファイルを連番で保存するというやり方です。
abc_2.csv、abc_3.csv、abc_4.csv、…、abc_n.csv (n = 2,3,4…)
という感じです。

こうした形式の保存方法のヒントはすでに文字列についてのエントリーで紹介済みです。
考え方としては、下のフローチャートのようになります。






















これであれば、100個でも200個でも大丈夫です。
さて、コードは以下の通り。

file_name = myfolder.Items(i).Attachments(j).DisplayName
If Dir(path & file_name) = "" Then
myfolder.Items(i).Attachments(j).SaveAsFile (path & file_name)
Else
'同じ名前のファイルが保管フォルダーにあるので、名前を変更
k = 2
While Dir(path & Replace(file_name, Right(file_name, 4), "") & "_" & k & Right(file_name, 4)) <> ""
k = k + 1
Wend
myfolder.Items(i).Attachments(j).SaveAsFile (path & Replace(file_name, Right(file_name, 4), "") & "_" & k & Right(file_name, 4))

コードの冒頭で読みやすくするために、file_nameという変数の中に添付ファイルのオリジナルのファイル名を突っ込んでいます。
これで可読性が上がり、自分に優しいコードになります。 簡単ですが、これで連番で保存することが出来るようになります。



PVランキング 人気ブログランキングへ

0 件のコメント:

コメントを投稿