これはこれで便利だと思います。
ただ、これは結構大ざっぱな作りです。
というのも、「SaveAs」は同一のファイル名のファイルが存在する場合上書き保存になってしまうからです。
ですので、一度に同一名ファイルのものを処理しようとすると最後に処理したファイルのみがポツンとフォルダに残った状態に。
いろいろ回避の仕方はありますが、その一つがファイルを連番で保存するというやり方です。
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という変数の中に添付ファイルのオリジナルのファイル名を突っ込んでいます。
これで可読性が上がり、自分に優しいコードになります。 簡単ですが、これで連番で保存することが出来るようになります。
0 件のコメント:
コメントを投稿