VBAでファイルのコピーをしてみる-その②

だいたいマクロを組む時は、やりたいことに関連していそうな言葉で、先人たちの知恵をgoogle先生に探してもらい、それを利用するのだが、当然ながら、こちらのやりたいこと、前提条件にピッタリ一致するものはめったにない。ごくまれに、非常に初歩的、一般的なことを調べた時は、まさしくこれ、ということもあるが、たいていは、状況が異なる、汎用すぎる、目標がズレてる、などで、こちらの都合に合わせるためには、加工がいろいろと必要になる。加工は、コードの一文一文がどういう働きをしているかわからないとできないので、勉強になるのだが、それでも、同じことをやりたいのなら、こちらの方がより効率的、とか、これは余計、なんてもんがきっと残っているに違いない。1年後ぐらいに見なおしたら、気づくことも多いだろう。

 

 前回のマクロ、Sub FileCopipe() について。

chamcham5628.hatenablog.com

 Sub FileCopipe()を作っているときに気がついたこととしては、エクセルVBAのnameなるステートメント。単にファイルの名称を変えるだけのようなステートメント名であるが、実は何処にあるファイルなのか、ディレクトリを含めて指定するので、変更後のフォルダ、ディレクトリを元とは違うものに指定すれば、移動になる。元の場所からはいなくなる。もちろん、ディレクトリ部分を同じにすれば、名前だけ帰ることもできるが、VBAではない通常の「名前の変更」とは違うので、少々混乱する。

 

新しいファイル名は、元のファイル名から、数字だけを取り出して作る。種別の文字数は一定なので、「名前」の部分の文字数がバラバラだとしても、元のファイル名の左の何文字目から何文字目まで、右の何文字目から何文字目まで、という作り方でも良かったのかもしれない。しかし、時々、変なところに空白が入っていたりして、文字数を数えるやり方にやや不安があったので、一文字ずつ、これは数値かどうか、を判断するやり方にした。「種別」部分に数値はないが、ごくまれに「名前」部分に数値が入ることがある。その時は、その数値も拾ってしまうが、その時は人力で個別対応になるかな。対応する手段がないわけではないが、その手段のための準備を考えると、個別対応の方が効率的と思われる。