一行のコードで終わらせる ②-3 使いどころ

昨日は、指定フォルダ内にある全ファイルのパスを取得する「一行のコード」について、これを可能な限り分解して理解することに挑戦した。
infoment.hatenablog.com
こういうことかな?と、何となく理解しつつも、業務用ツールに組み込むのは躊躇われる。なぜなら、本業がプログラミングではない私たちにとって、初見でこれを理解するのは不可能だからだ。引継ぎなど、相当面倒なことになる。

では、全く使い処が無いか?そんなことはない。
個人使用に於いては、充分使い処がある。

サブフォルダを含めたファイルリストの取得

指定フォルダ内にサブフォルダが存在する場合、今までの方法では、サブフォルダ下を含めた全てのファイルリストを取得できない。この場合、既に多くの方が紹介されているように、「再帰呼び出し」というテクニックが必要になる。

サブフォルダを含めてファイル一覧を取得する(Dir関数の再帰呼び出し):Excel VBA|即効テクニック|Excel VBAを学ぶならmoug


一方で、昨日紹介した「一行コード」においては、「/s」を追記するだけで、サブフォルダを含めたリストの取得が可能になる。

Function_FileList = Filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir """ & FolderLocation & """ /b /s /a-d").stdout.readall, vbCrLf), ".")

詳細は、↓ こちらを参照されたし。
www.k-tanaka.net


再帰呼び出しのテクニックは、ファイルリストを作成する以外の場面でも使い処がある。
infoment.hatenablog.com

従って、再帰呼び出しについて理解しつつ、自己使用に於いては一行コードで手っ取り早く済ます、というのも有りかもしれない。


その他に、Windows API を用いた方法も有るようだ。
https://wa3.i-3-i.info/word12430.html

個人的には未踏領域。2019年は、この辺りも積極的に学習して、業務改善に活かせればと思っている。また、2019年はVBを学習し、業務で使用している「iCAD/SX」の独自コマンド開発にも挑戦したい。

ということで今回は、上記二つの「新年の抱負」を述べて締めくくりとします。

参考まで。