[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/07/01(Fri) 14:26
投稿者名:りこ
URL :
タイトル:
ファイル情報の表示
こんにちは。いつも大変お世話になり勉強させていただいております。

ファイル情報の表示について行き詰ってしまい、どなたかご教示いただけないかと投稿いたしました

単純なことなのです。
所定のフォルダ内にある、ファイル名、サイズ、更新日、作成日を一覧表示したいのです。
ただ、ファイルシステムオブジェクトは使用しないで行いたいのです。
理想としては、DOSの「DIRコマンド」のような結果が表示できれば良いのですが・・・
(結果を表示するのには、リストボックスでもリストビューでもかまわないのですが)

ただ、当初は「ファイルリストコントロール」を使用していたのですが、
このコントロールは詳細情報を表示することはできないのですよね?

何か良い方法はございますでしょうか?
ヒントだけでもお教えいただければ幸いです。

ちなみに開発環境は、WinXP/Win2000 のVB6(SP6)です。

宜しくお願いいたします。

投稿時間:2005/07/01(Fri) 15:02
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: ファイル情報の表示
> 所定のフォルダ内にある、ファイル名、サイズ、更新日、作成日を一覧表示したいのです。
> ただ、ファイルシステムオブジェクトは使用しないで行いたいのです。

『ファイルシステムオブジェクト』を使いたくない理由は何なのでしょうか?
その理由次第では、他の手法を紹介しても、「その方法も使いたくない」と言われてしまいそうで……。


> ただ、当初は「ファイルリストコントロール」を使用していたのですが、
> このコントロールは詳細情報を表示することはできないのですよね?
できません。ListView や MSHFlexGrid 、あるいは RichTextBox などの方が良いでしょうね。


とりあえず、Shellオブジェクトを利用したサンプル。

Option Explicit

Private Sub Sample(ByVal FolderName As Variant)
    Dim ColumnLimit As Long
    Dim iColumn As Long
    Dim oShell As Object    'As Shell32.Shell
    Set oShell = CreateObject("Shell.Application")
    Dim oFolder As Object   'As Shell32.Folder
    Set oFolder = oShell.NameSpace(FolderName)
    Dim oFolderItems As Object  'As Shell32.FolderItems
    Set oFolderItems = oFolder.Items
    ColumnLimit = 0
    Do
        Dim ColumnName As String
        ColumnLimit = ColumnLimit + 1
        ColumnName = oFolder.GetDetailsOf(oFolderItems, ColumnLimit)
        Debug.Print ColumnName;
        If ColumnName = "" Then
            Exit Do
        Else
            Debug.Print "|";
        End If
    Loop
    Debug.Print Tab(1); String(230, "-")
    Dim oFolderItem As Object 'As Shell32.FolderItem
    For Each oFolderItem In oFolderItems
        Debug.Print Tab(1); oFolder.GetDetailsOf(oFolderItem, 0);
        For iColumn = 1 To ColumnLimit
            Debug.Print "|"; oFolder.GetDetailsOf(oFolderItem, iColumn);
        Next
    Next
    Debug.Print Tab(1); String(230, "-")
End Sub

Private Sub Form_Load()
    Me.Text1.Text = "C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\"
    Me.Command1.Caption = "列挙"
End Sub

Private Sub Command1_Click()
    Sample Text1.Text
End Sub

投稿時間:2005/07/01(Fri) 15:33
投稿者名:りこ
URL :
タイトル:
Re^2: ファイル情報の表示
早速のご教示ありがとうございます。
また、コードまでお教えいただき大変助かりました。
希望通りの処理ができそうです。

ファイルシステムオブジェクトを使用しない理由は
マシンによってVBランタイムを事前に入れないといけないシステムとなるので
(またはインストールソフトを作らなければならないので)
単体EXEで今回のシステムを作成したかったので
極力、使いたくなかったのです。

この先の開発の中でVBランタイムを必要とするものがでてきてしまうかもしれませんが・・・・

この度はありがとうございました。