请教如何用For Each ... next得到一个文件夹里的所有.hat文件,谢谢!!!如:我想得到e:\aa文件夹里的所有.hat文件,谢谢!!!

解决方案 »

  1.   

    这是我在程序中用过的一段代码,用于设置背景的,我的背景放在一个固定文件夹下面,窗体启动时到该文件夹下读取图片文件。Private Sub Form_Load()
    On Error GoTo ErrMsg
        Dim strStatus
        Dim fso As FileSystemObject
        Dim fld As Folder
        Dim filTemp As File
        Dim strExtendName As String
        
        Set fso = New FileSystemObject
        Set fld = fso.GetFolder(gstrCurrPath & BackgroundDir)
        lstFileName.AddItem "(无)"
        If gstrManagerBackground = "(无)" Then
           lstFileName.ListIndex = lstFileName.NewIndex
        End If
        
        For Each filTemp In fld.Files
            strExtendName = LCase(Right(filTemp, 4))
            If strExtendName = ".bmp" _
                    Or strExtendName = ".jpg" _
                    Or strExtendName = ".gif" _
                    Or strExtendName = ".ico" _
                    Or strExtendName = ".dib" _
                    Or strExtendName = "jpeg" _
                    Or strExtendName = ".jpe" _
                    Or strExtendName = ".tif" _
                    Or strExtendName = ".png" Then
                 lstFileName.AddItem filTemp.Name
                 If filTemp.Name = gstrManagerBackground Then
                    lstFileName.ListIndex = lstFileName.NewIndex
                 End If
            End If
        Next
        
        If lstFileName.Text = "" Then
            lstFileName.AddItem GetFileName(gstrManagerBackground)
            lstFileName.ListIndex = lstFileName.NewIndex
        End If
        
        cmdApply.Enabled = False
        Exit Sub
    ErrMsg:
        strStatus = SetError(Err.Number, Err.Description, Err.Source)
        ErrMsg strStatus
    End Sub
      

  2.   

    注意,要先“工程”->“引用”,选中“Microsoft Scripting Runtime”
      

  3.   

    使用filesystemobject
    首先在工程中引用MIcrosoft Scripting Runtime:Private Sub Command1_Click()
        Dim FSys As New FileSystemObject
        Dim F As Folder
        Dim F1 As File
        
        Set F = FSys.GetFolder("c:\downloads")
        For Each F1 In F.Files
            Debug.Print (FSys.GetExtensionName(F1.Name))
        Next
    End Sub上面的代码列出c:\downloads目录下的所有文件的扩展名
      

  4.   

    Private Sub Form_Load()
        '在窗口中加一个File控件
        Dim i As Long
        
        File1.Visible = False
        File1.Path = "c:\"
        File1.Pattern = "*.hat"
            
        For i = 0 To File1.ListCount - 1
            MsgBox File1.List(i)
        NextEnd Sub
    最好少用外部控件,能不用就不用,否则打包的时候就大了!!
      

  5.   

    太复杂化了吧
    直接用Dir函数就解决问题,看MSDN中Dir函数的帮助,是列出所有文件夹的
    改改就能用,不过要判断文件的最后四个字符为".hat"