■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#145-1ファイルシステムコントロ−ルの活用悩めるテル君2003-12-05(金) 23:05
     #149-1RE#145:ファイルシステムコントロ−ルの活用藤代千尋2003-12-06(土) 22:02
     #152-1RE#149:ファイルシステムコントロ−ルの活用悩めるテル君2003-12-07(日) 12:54
     #153-1RE#152:ファイルシステムコントロ−ルの活用藤代千尋2003-12-08(月) 09:37
     #160-1RE#153:ファイルシステムコントロ−ルの活用悩めるテル君2003-12-08(月) 21:46
     #161-1RE#153:ファイルシステムコントロ−ルの活用悩めるテル君2003-12-08(月) 21:47
     #163-1RE#160:ファイルシステムコントロ−ルの活用藤代千尋2003-12-09(火) 10:36
     #165-1RE#163:ファイルシステムコントロ−ルの活用悩めるテル君2003-12-09(火) 23:06
#145-1
ファイルシステムコントロ−ルの活用
ファイルシステムコントロ−ルを使って、フォルダ−内のファイル一覧を作成したいと思っています。
この一覧表の中身として、
「ファイル名」:「サイズ」:「更新日時」:「各ファイルの一行目の内容表示」を
表示できる、FileListBoxを作成したいのですが、プロパティ、もしくはコ−ド表示
はどのようにすればよいのですか?教えてください。

悩める初心者
#149-1
RE#145:ファイルシステムコントロ−ルの活用
> 「ファイル名」:「サイズ」:「更新日時」:「各ファイルの一行目の内容表示」を
> 表示できる、FileListBoxを作成したいのですが、プロパティ、もしくはコ−ド表示
> はどのようにすればよいのですか?教えてください。

エクスプローラーの右側みたいなヤツですね。
コントロールとしては、リストビューを使います。
情報は、自前で取るしかありません。(^^;
#Dir でループしてファイル取得、FileSize・FileDateTime でサイズと更新日時、
 1行目は、Open/Line Input/Close。
#152-1
RE#149:ファイルシステムコントロ−ルの活用
> > 「ファイル名」:「サイズ」:「更新日時」:「各ファイルの一行目の内容表示」を
> > 表示できる、FileListBoxを作成したいのですが、プロパティ、もしくはコ−ド表示
> > はどのようにすればよいのですか?教えてください。
> 
> エクスプローラーの右側みたいなヤツですね。
> コントロールとしては、リストビューを使います。
> 情報は、自前で取るしかありません。(^^;
> #Dir でループしてファイル取得、FileSize・FileDateTime でサイズと更新日時、
>  1行目は、Open/Line Input/Close。

ありがとうございます。
参考図書をもとに”Listvew”を作成しましたが、ファイル名の取得までできました
しかし、「フォルダ−内の各ファイルの一行目表示」
    「ファイルサイズの取得  FileSize」
    「更新日の取得」3項目が表示できません。
以下にコ−ドを書いています。
どの様に手直しすべきでしょうか?
悩める初心者です。

Private Sub Dir1_Change()
    ChDir Dir1.Path
    ListView1.ListItems.Clear
    p = Dir("*.*", 2 + 4 + 16)
    Do While p <> ""
        If Not (p = "." Or p = ".") Then
            Set lv = ListView1.ListItems.Add(, , p)                    'ファイル名の取得
            'set lv = subitems(1) = Open/Line Input/Close       ’フォルダ−内の各ファイルの一行目表示
            'Set lv.SubItems(2) = (FileLen(p) + 1023) \ 1024 & "KB"  ’ファイルサイズの取得  FileSize
           'Set lv.SubItems(3) = FileDateTime(p)           ’更新日の取得
        End If
        p = Dir
    Loop
            
End Sub

Private Sub Drive1_Change()
    ChDrive Drive1.Drive
    Dir1.Path = Drive1.Drive
    Dir1_Change
End Sub

Private Sub Form_Load()
    Dim x As ColumnHeader
    w = ListView1.Width / 3.5
    Set x = ListView1.ColumnHeaders.Add(, , "ファイル名", ListView1.Width / 5)
    Set x = ListView1.ColumnHeaders.Add(, , "情報", ListView1.Width / 2, 1)
    Set x = ListView1.ColumnHeaders.Add(, , "サイズ", ListView1.Width / 5, 1)
    Set x = ListView1.ColumnHeaders.Add(, , "更新日時", ListView1.Width / 4, 1)
    
    ListView1.View = lvwReport
    Dir1_Change
    
End Sub
#153-1
RE#152:ファイルシステムコントロ−ルの活用
SubItem は文字列です。Set はいりません。(^^;

            Set lv = ListView1.ListItems.Add(, , p)
            lv.SubItems(1) = File_FirstLine(p)
            lv.SubItems(2) = (FileLen(p) + 1023) \ 1024 & "KB"
            lv.SubItems(3) = FileDateTime(p)

Public Function File_FirstLine(ByVal FullName As String) As String
    Dim h As Long
    On Error GoTo ErrHandle

    If GetAttr(FullName) = vbDirectory Then
        File_FirstLine = "<Dir>"
    Else
        h = FreeFile
        Open FullName For Input Access Read Lock Write As h
        Line Input #h, File_FirstLine
        Close #h
    End If
    Exit Function
    
ErrHandle:
    File_FirstLine = ""
    Exit Function
End Function
#160-1
RE#153:ファイルシステムコントロ−ルの活用
ありがとうございました。うまくいきました。

ちなみに、2行目、3行目、最終行を取得するには?

Public Function File_FirstLine(ByVal FullName As String) As String
    Dim h As Long
    On Error GoTo ErrHandle

    If GetAttr(FullName) = vbDirectory Then
        File_FirstLine = "<Dir>"
    Else
        h = FreeFile
        Open FullName For Input Access Read Lock Write As h
        Line Input #h, File_FirstLine
        Close #h
    End If
    Exit Function
    
ErrHandle:
    File_FirstLine = ""
    Exit Function
End Function

File_FirstLineをどの様に記述すればよろしいでしょうか?
2行目・・・・   
3行目・・・・
最終行・・・

悩める初心者
#161-1
RE#153:ファイルシステムコントロ−ルの活用
ありがとうございました。うまくいきました。

ちなみに、2行目、3行目、最終行を取得するには?

Public Function File_FirstLine(ByVal FullName As String) As String
    Dim h As Long
    On Error GoTo ErrHandle

    If GetAttr(FullName) = vbDirectory Then
        File_FirstLine = "<Dir>"
    Else
        h = FreeFile
        Open FullName For Input Access Read Lock Write As h
        Line Input #h, File_FirstLine
        Close #h
    End If
    Exit Function
    
ErrHandle:
    File_FirstLine = ""
    Exit Function
End Function

File_FirstLineをどの様に記述すればよろしいでしょうか?
2行目・・・・   
3行目・・・・
最終行・・・

悩める初心者
#163-1
RE#160:ファイルシステムコントロ−ルの活用
普通の方法であれば、ループして各行を取得し、そのとき行数を数えてください。
1 行目、2 行目は、その行数で分岐して取得します。
最後の行は、ループから出たときの、Line Input に使った変数になります。

         iRec = 1
         h = FreeFile
         Open FullName For Input Access Read Lock Write As h
         Do Until EOF(h)
             Line Input #h, sLine
             Select Case iRec
                 Case 1: ...
                 Case 2: ...
             End Select
             iRec = iRec + 1
         Loop
         Close #h
 
ファイル全体を取得して、それを Split で分解する方もあります。
速度的にはコッチの方が速いですが、すべてのファイルを開いてたらやっぱり遅いでしょう。(^^;
Public Function TextFile_ReadAll(ByVal FullName As String) As String
    Dim h As Long
    Dim sWhole As String

    h = FreeFile
    Open FullName For Input Access Read Lock Write As h
    File_GetWhole = StrConv(InputB$(LOF(h), h), vbUnicode)
    Close #h
End Function

Public Sub Test()
    Dim asLines As Variant
    
    asLines = Split(TextFile_ReadAll("c:\test.txt"), vbCRLF)
    Debug.Print asLines(0)
    Debug.Print asLines(1)
    Debug.Print asLines(UBound(asLines))
End Sub
#165-1
RE#163:ファイルシステムコントロ−ルの活用
> 普通の方法であれば、ループして各行を取得し、そのとき行数を数えてください。
> 1 行目、2 行目は、その行数で分岐して取得します。
> 最後の行は、ループから出たときの、Line Input に使った変数になります。
> 
>          iRec = 1
>          h = FreeFile
>          Open FullName For Input Access Read Lock Write As h
>          Do Until EOF(h)
>              Line Input #h, sLine
>              Select Case iRec
>                  Case 1: ...
>                  Case 2: ...
>              End Select
>              iRec = iRec + 1
>          Loop
>          Close #h
>  

大変お世話になりました。
おかげさまでうまくいきました。
このファイルコントロ−ルシステムを使って次のチャレンジをしたいと思います。
また、質問が出てくると思いますので、その節はよろしくお願いします。・・・  \ 〇 〇 / バンザイ

悩み解消
このページと関連する記事:
#968-1VBによるExcelの二重起動禁止2004-01-22(木) 12:19
#46280-0テキストファイルの読み込み2001-08-29(水) 11:01
#1303-1検索方法について2004-03-08(月) 09:30
#40587-0テキストファイルの文字列置換方法2001-03-21(水) 15:34
#8452-0String変数を決められた数だけ宣言2000-06-01(木) 12:51
#508-3テキストファイルを一気に読み込みたい。2003-12-05(金) 20:54
#222-3行数の取得2003-11-21(金) 17:38
#565-1ファイルが開いているかを知る方法2004-04-12(月) 09:06
#16680-0csvファイルをキー読みする方法はありますか?2001-06-22(金) 10:50
#2174-1テキストBOX内の文字の保存方法について2004-05-17(月) 13:39
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)