VBA/Excel/Access/Word/File Path/FileSystemObject

Материал из VB Эксперт
Перейти к: навигация, поиск

Copying a File

 
Sub Copy_AnyFile()
   Dim fs As Object
   Dim strDb As String
   Set fs = CreateObject("Scripting.FileSystemObject")
   strDb = "C:\NewAccessDb.mdb"
   fs.CopyFile strDb, CurrentProject.Path & "\"
   Set fs = Nothing
End Sub



Delete file by using FileSystemObject

 
Sub cmdDelete()
    Dim myFileSystemObject As FileSystemObject
    Set myFileSystemObject = New FileSystemObject
    myFileSystemObject.DeleteFolder "c:\yourFolder"
    myFileSystemObject.DeleteFile "c:\yourFile"
    Set myFileSystemObject = Nothing
End Sub



Delete Folder by using FileSystemObject

 
Sub cmdDelete()
    Dim myFileSystemObject As FileSystemObject
    Set myFileSystemObject = New FileSystemObject
    myFileSystemObject.DeleteFolder "c:\yourFolder"
    myFileSystemObject.DeleteFile "c:\yourFile"
    Set myFileSystemObject = Nothing
End Sub



Display selected file information

 
Private Sub cmdFileInfo_Click()
    Dim myFileSystemObject As FileSystemObject, aFile As File
    Set myFileSystemObject = New FileSystemObject
    Set aFile = myFileSystemObject.GetFile("c:\test.txt")
    With aFile
        Debug.Print "Created: " & .DateCreated & vbCrLf
        Debug.Print "Last Accessed: " & .DateLastAccessed & vbCrLf
        Debug.Print "Last Modified: " & .DateLastModified & vbCrLf
        Debug.Print "Size: " & Format(.Size / 1000#, "#0.00") & "KB" & vbCrLf
        Debug.Print "Path: " & .Path & vbCrLf
        Debug.Print "Type: " & .Type
    End With
    Set myFileSystemObject = Nothing
    Set aFile = Nothing
End Sub



Listing files with a For...Each loop

 
     Sub FileListDemo()
         Dim objFSO As Object
         Dim objFolder As Object
         Dim objFile As Object
         Set objFSO = CreateObject("Scripting.FileSystemObject")
         Set objFolder = objFSO.GetFolder("C:\")
         For Each objFile In objFolder.Files
           Debug.Print objFile.name
         Next objFile
     End Sub



Recursive Search using the FileSystemObject Model

 
Private Sub cmdStartSearch_Click()
    Call FindFile("yourFile", "C:\", False)
    Unload frmSearch
End Sub
Private Sub FindFile(target As String, ByVal aPath As String, foundTarget As Boolean)
    Dim myFileSystemObject As FileSystemObject, curFolder As folder, folder As folder
    Dim folColl As Folders, file As file, fileColl As Files
    Set myFileSystemObject = New FileSystemObject
    Set curFolder = myFileSystemObject.GetFolder(aPath)
    Set folderList = curFolder.SubFolders
    Set fileList = curFolder.Files
    For Each file In fileList
        If file.name = target Then
            foundTarget = True
            frmFileSystem.lblPath.Caption = file.Path
            Exit Sub
        End If
    Next
    If Not foundTarget Then
        For Each folder In folderList
            DoEvents        "Yield execution so other events may be processed
            If Not foundTarget Then
                 FindFile target, folder.Path, foundTarget
            End If
        Next
    End If
    Set myFileSystemObject = Nothing
    Set curFolder = Nothing
    Set folderList = Nothing
    Set fileList = Nothing
End Sub