2021年6月4日金曜日

ファイルシステムへアクセスする制御ライブラリーなので、ワークシートと全く無関係に操作できるプログラミング ー ファイルシステムオブジェクト(その一)(VBA - FileSystem Object)

       
パソコンのデスクトップ画面に、一時期的に作ったフォルダーが溜まりました。
後で、どこか適当なドライブへ移動させようと思って、つい忘れてしまいます。

そんなフォルダーには、必要なファイルが格納された、既に良く分かりません。
一個一個開いてみてもいいのですが、面倒くさいので、とにかく移動させよう。

こうして、一個一個のフォルダーを切り取り、格納先ドライブへ移動させます。
これが意外に地味な作業でして、便利なプログラミングがないのか気になるな。

探してみたが、ビジネスパソコン用のフリーアプリが最近は少なくなりました。
フリーアプリ自体の開発も、主流が携帯電話の方へ移ってしまったような感じ。

なので、PCデスクワークでお給料を頂く自分としては、効率的な業務をしたい。
とすれば、エクセルのVBAで、ちゃちゃっと作ってしまうのが、適当だろうな。

こうして、思いついて作り始めましたが、VBAにもファイル管理の難点がある。
それは、フォルダーと格納ファイルを一括に移動させる実装コマンドがないの。

 < VBA実装のファイル関連コマンド >
   Dir ⇒ ファイルやフォルダの存在をチェック
   MkDir ⇒ フォルダを作成
   RmDir ⇒ 既存のフォルダを削除
   FileCopy ⇒ ファイルをコピー

こうなると、移動させるフォルダー名で移動先のドライブにフォルダーを作成。
それから、中のファイルを一つずつ移動させて、最期に元のフォルダーを削除。

もし、フォルダー配下に孫フォルダーと格納ファイルもあれば、もっと厄介ね。
移動先のドライブに、同名のフォルダーを作ったら配下に孫フォルダーも作成。

次にファイル移動ですが、もし、孫フォルダーにひ孫フォルダーがあれば厄介。
というか、作業がかなり煩雑なプログラムになって、もうお手上げ状態だろう。

複雑でもフォルダー内に複数の孫フォルダーと複数ファイルの条件が限度かな。
フォルダー内の階層を増やしても、作成する頻度が少なければ意味がないなあ。


現実には、一階層程度だろうから、フォルダー+孫フォルダー+複数ファイル。
この条件付けでプログラミングをするとして、VBAのコマンドを参照します。

まあ、エクセルVBAは、便利な外部ライブラリ(ActiveXオブジェクト)がある。
そして、この中からファイルシステムオブジェクトを参照設定して利用します。

メリットでは、コードを読みやすい、変数の種類を明確にできる、処理が速い。
他には、コーディングでスペルミスをしても、自動で保管する機能が利用可能。

なので、これを使用することにして、先ずはプログラムを書いていきましょう。
というわけで、今回は第一回目の投稿になりますが、何回かに分けて書いてい行きますので、コーディングを参考にしたいという人は、今後の投稿に注目していただくとして、これからプログラミングをどうするか思案している自分がいるのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



0 件のコメント:

コメントを投稿