拡張子のないファイル

拡張子のないファイル

前回の

akashi-keirin.hatenablog.com

に、ことりちゅん (id:Kotori-ChunChun) 氏からコメントをいただいた。

曰く、

実用上困ることは滅多にないですが、拡張子のないファイルも存在するので、自作された方は要注意です。

と。

なるほど、確かに、たまに拡張子がなくて、「種類」欄に単に「ファイル」とだけ記されているものを見かける。

「ファイル」をFileSystemObjectはどう扱うのか

で、やってみた。

f:id:akashi_keirin:20190406201559j:plain

ご覧のように、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

f:id:akashi_keirin:20190406201602j:plain

こうなる。

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

こいつを実行すると、

f:id:akashi_keirin:20190406201608j:plain

こうなる。

うーむ、実にまずい結果が返っておる。

やはり、所詮は素人の浅はかな思いつきである。

おわりに

やはり、プロの作ったものは、ちょっとしたところがよくできている。