ホーム > カテゴリ > Visual Basic >

条件と一致するファイルを検索して列挙する

条件と一致するファイルを検索して列挙するサンプルです。

サンプルの実行画面

ソースコード

[FindFile.frm]

'■FindFirstFile
'指定のディレクトリ、ファイル名を検索する

'<引数>
'lpFileName      ディレクトリ名かファイル名 (ワイルドカード使用可能)
'lpFindFileData  WIN32_FIND_DATA構造体

'<戻り値>
'正常終了の時ファイル検索ハンドル
'エラーの時INVALID_HANDLE_VALUE

Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long


'■FindNextFile
'FindFirstFileに続き次を検索

'<引数>
'hFindFile       ファイル検索ハンドル
'lpFindFileData  WIN32_FIND_DATA構造体

'<戻り値>
'正常終了0以外

Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long


'■FindClose
'ファイル検索ハンドルを解放する

'<引数>
'hFindFile  ファイル検索ハンドル

'<戻り値>
'正常終了0以外

Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long



Private Type FILETIME
    dwLowDateTime As Long        '下位32ビット
    dwHighDateTime As Long       '上位32ビット
End Type

Private Type WIN32_FIND_DATA
  dwFileAttributes As Long       'ファイルの属性
  ftCreationTime As FILETIME     'ファイルの作成日時
  ftLastAccessTime As FILETIME   '最終アクセス日
  ftLastWriteTime As FILETIME    '最終更新日
  nFileSizeHigh As Long          'ファイルサイズ(上位)
  nFileSizeLow As Long           'ファイルサイズ(下位)
  dwReserved0 As Long            '常に0
  dwReserved1 As Long            '常に0
  cFileName As String * 260      'ファイル名
  cAlternate As String * 14      '
End Type

Const INVALID_HANDLE_VALUE = &HFFFFFFFF

Private Sub Command1_Click()

    Dim Ret As Long                 '戻り値
    Dim FileHandle As Long          'ファイルの検索ハンドル
    Dim Win32 As WIN32_FIND_DATA    'WIN32_FIND_DATA構造体
    Dim nFile As String             'ファイル名
    Dim nPath As String             'パス名
    Dim Title As String             'NULL文字を抜いたファイル名
    Dim Top   As Long               'NULL文字の位置

     '初期化
      List1.Clear
 
     'ディレクトリ、ファイル名の設定
      nFile = Text1.Text & Text2.Text
    
     'ファイルを検索してファイル検索ハンドルを取得する
      FileHandle = FindFirstFile(nFile, Win32)
        
      MousePointer = 11
        
      Ret = 1
        
        
   'ファイルがある限りループ
    Do While Ret <> 0
        
        'NULLを取っ払う
           Top = InStr(Win32.cFileName, vbNullChar)
           Title = Left(Win32.cFileName, Top - 1)
               
           List1.AddItem Text1.Text & Title
       
        '続いてファイルを検索する
           Ret = FindNextFile(FileHandle, Win32)
    
    Loop
    
       '検索ハンドルの解放
         Ret = FindClose(FileHandle)

         MousePointer = 0
       
End Sub

ソースコード一式のダウンロード

vbapi_findfile.zip 1.63 KB (1,677 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月06日
記事NO:00413


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律