- 日時: 2009/12/27 13:31
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[応用コード][ファイル][リストボックス] * * キーワード:指定のファイル,作成日時順に並べ替え,ディレクトリー内,読み込み,, * ***********************************************************************************
元質問:画像を読み込みピクチャーボックスに表示 - hou 2003/02/16-10:26 No.2742
1.画像は、作成時間の新しい順に20枚のみ表示させる。 2.作成フォームの大きさで起動する。(例を実行すると最大化で起動する)
------------------------------------------------------------------------------- Re^2: 画像を読み込みピクチャーボックスに.. - 花ちゃん 2003/02/16-14:05 No.2745 -------------------------------------------------------------------------------
ListBox のSorted プロパティを利用した方法をこちらが理解できたら 並べ替えはここのソートプログラムを利用して作成して見て下さい。
Private Sub Command1_Click() Dim strFilDay As String Dim strFileTime As String Dim strFolderName As String Dim TempFile As String Dim Kakutyousi As String Dim Target As String Dim KPos As Integer '取得したいファイルの拡張子を指定 Target = ".BMP.JPG.JPEG.WMF.EMF.ICO.GIF.PNG" strFolderName = "c:\windows\" 'ディレクトリー内の全ファイル・フォルダを読み込む 'TempFile = Dir$(strFolderName, vbDirectory Or vbHidden Or vbSystem) TempFile = Dir$(strFolderName & "*.*") 'ファイルだけならこちらでも 'TempFile が空になるまで繰り返し Do While TempFile <> "" KPos = InStr(TempFile, ".") If KPos > 1 Then '拡張子を取得 Kakutyousi = Mid$(TempFile, KPos, Len(TempFile) - KPos + 1) '指定の拡張子照合(大文字小文字を区別しないで) If InStr(1, Target, Kakutyousi, vbTextCompare) > 0 Then 'ファイルをファイルリストボックスから読込んでもOKです。 strFileTime = FileDateTime(strFolderName & TempFile) If Len(strFileTime) <= 11 Then strFileTime = strFileTime & " 00:00:00" End If strFilDay = Left$(strFileTime, 11) strFileTime = Mid$(strFileTime, 12, Len(strFileTime) - 11) '9時までの場合0を付加(Sortの時の桁揃え用) If Len(Trim$(strFileTime)) <= 7 Then strFileTime = "0" & strFileTime End If List1.AddItem strFilDay & strFileTime & " " & _ strFolderName & TempFile End If End If TempFile = Dir$ '次のファイル名を読込 Loop 'リストボックスからファイルを取り出し Dim myFileName(19) As String Dim FileCount As Long Dim N As Integer '日付の新しい方から20個を取り出し If List1.ListCount > 0 Then For FileCount = List1.ListCount - 1 To 0 Step -1 myFileName(N) = Trim$(Mid$(List1.List(FileCount), 20, _ Len(List1.List(FileCount)) - 19)) N = N + 1 If N = 20 Then Exit For Next FileCount End If '取り出したファイルを表示 Dim i As Long For i = 0 To 19 Debug.Print myFileName(i) Next i End Sub Private Sub Form_Load() 'List1.Sorted = True 別途プロパティで設定して下さい List1.Visible = False End Sub
|