拡張子のないファイル
拡張子のないファイル
前回の
に、ことりちゅん (id:Kotori-ChunChun) 氏からコメントをいただいた。
曰く、
実用上困ることは滅多にないですが、拡張子のないファイルも存在するので、自作された方は要注意です。
と。
なるほど、確かに、たまに拡張子がなくて、「種類」欄に単に「ファイル」とだけ記されているものを見かける。
「ファイル」をFileSystemObjectはどう扱うのか
で、やってみた。
ご覧のように、TargetFiles
フォルダ内に、「ち~んw」、「ち~んw.pdf」、「ち~んw.txt」の三つを用意した。「用意した」っつっても、一つ目の「ち~んw」は、単に「ち~んw.txt」の拡張子を削除しただけなんだが。
この状態で、前回のリスト2を実行してみる。
前回記事のリスト2 再掲
Public Sub test02() Set fsObj = New FileSystemObject Dim targetFolder As Folder Set targetFolder = _ fsObj.GetFolder(ThisWorkbook.Path & "\TargetFiles\") '" Dim targetFile As File For Each targetFile In targetFolder.Files Debug.Print targetFile.Path Debug.Print fsObj.GetExtensionName(targetFile.Path) Next End Sub
こうなる。
FileSystemObject
オブジェクトのGetExtentionName
メソッドは、""
を返しているっぽい。うーむ、実に健全。さすが、プロの作ったオブジェクトだ。
再発明した車輪でも実験してみる
試しに、再発明した車輪、すなわち、前回のリスト1でも実験してみる。
もうどうなるか見当はついていると思うけど。
前回記事のリスト1 再掲
Public Sub test01() Set fsObj = New FileSystemObject Dim targetFolder As Folder Set targetFolder = fsObj.GetFolder(ThisWorkbook.Path & "\TargetFiles\") '" Dim targetFile As File For Each targetFile In targetFolder.Files Dim ar As Variant ar = Split(targetFile.Name, ".") Debug.Print ar(UBound(ar)) Next End Sub
こいつを実行すると、
こうなる。
うーむ、実にまずい結果が返っておる。
やはり、所詮は素人の浅はかな思いつきである。
おわりに
やはり、プロの作ったものは、ちょっとしたところがよくできている。