パソコン活用研究5番街(Visual
Basic、Excel(VBA)、BASIC プログラミング研究)
ファイルの一覧の取得(VB.NET)
(準備中)
VB.NET以降でファイルの一覧を取得する方法。ここではVB2022を使っています。
VB4〜6/VBAでは、Dir関数でファイルやディレクトリに一覧を取得しました。この方法については、
Dir関数によるファイル名の取得をご参照下さい。
VB.NET以降でもVB4〜6との互換性維持のため、VB4〜6と同機能のDir関数が残されており、このDir関数を使って
ファイルやフォルダ(ディレクトリ名)の一覧を取得することが可能です。将来はVB6との互換性を保つための関数は
なくなるかもしれませんが(VB2022には残っている)。
(1)Dirを使ったファイル一覧取得のプログラム
@Dir関数の使い方
基本的には、VB4〜6/VBAでは、Dir関数と同じですので、詳細はDir関数によるファイル名の取得をご参照下さい。
ただし、VB.NET以降では、Dir関数はMicrosoft.VisualBasic名前空間のFileSystemモジュールにある関数なので、
いきなりDir()と記述すると「Dirは名前空間であり式としては使えない」というようなエラーメッセージがでます。
正式には、Microsoft.VisualBasic.FileSystem.Dir() と記述することになりますが、デフォルトでMicrosoft.VisualBasic名前空間
はimportされているようなので、FileSystem.Dir() で使えると思います。
(以下のプログラムは両方の記述の仕方をして試している)
Aリスト
.net framework2.0以降、VB2015以降でVBでもリストが使えるようになった(らしい)。
ファイル名の一覧はfilenamesというリストに保存していきます。
ファイル名を取得しきったら、以下のForループで一挙に表示させています。
For Each fileName In fileNames
Console.WriteLine(fileName)
Next
For Each .. In .. の構文については
実行してみたところ

Imports System.IO
Module Program
Sub Main(args As String())
' Specify the directory path
Dim directoryPath As String
Dim fileNames As List(Of String)
Console.Write("DirectoryPath:")
directoryPath = Console.ReadLine()
' Call the GetFileNames function to retrieve the list of file names
fileNames = GetFileNames(directoryPath)
' Display the file names
Console.WriteLine("List of File Names:")
For Each fileName In fileNames
Console.WriteLine(fileName)
Next
Console.ReadLine()
End Sub
Function GetFileNames(directoryPath As String) As List(Of String)
Dim fileNames As New List(Of String)
' Use the Dir function to get the first file in the directory
Dim fileName As String = Microsoft.VisualBasic.FileSystem.Dir(directoryPath)
' Loop through all files in the directory using Dir
Do While fileName <> ""
' Add the file name to the list
fileNames.Add(fileName)
' Use Dir with no arguments to get the next file
fileName = FileSystem.Dir()
Loop
Return fileNames
End Function
.NET Framework2.0以降なら、System.IOの名前空間のDirectoryクラスのメソッドのGetFiles
を使うともっと簡単にファイル名一覧の取得ができます。
GetFilesメソッドで指定されたフォルダ(ディレクトリ)にあるファイル名を全て取得します。
Dir関数の場合は、1つ1つのファイル名を取得してはリストに追加して保存していましたが、これと比べると
大違いです。
Imports System
Imports System.IO
Module Program
Sub Main(args As String())
' Specify the directory path
Dim directoryPath As String
Dim fileNames As String()
Console.Write("DirectoryPath:")
directoryPath = Console.ReadLine()
' Call the GetFileNames function to retrieve the list of file names
fileNames = Directory.GetFiles(directoryPath)
' Display the file names
Console.WriteLine("List of File Names:")
For Each fileName In fileNames
Console.WriteLine(fileName)
Next
Console.ReadLine()
End Sub
End Module
TopPage > Visual BasIc&Excel活用研究目次