2016-12-23 90 views
0

我正在使用Access 2013.我有一張表中的圖像列表。然後我需要搜索一組文件夾(包括子文件夾),找到這些圖像並將它們複製到一個新目錄中。包含圖像名稱的表不會引用文件路徑。MS Access VBA從表中搜索圖像文件名,搜索並複製它們

達到此目的的最佳方法是什麼?是否有可能循環遍歷表並執行搜索,或者我是否可以將其分解並手動找到每個文件並更新一個標記以表明它存在,然後返回並複製它們?

不知道如何做到這一點,但將不勝感激任何想法。

感謝。

+0

文件系統objet +遍歷記錄集。 – vacip

+0

好的,我會給它去 – Michael

回答

1

對於一些進口計劃,我不得不處理文件,創建副本等等,我創建了一些功能,幫助過程中,你可能會發現他們的一些用途:

從VBA創建文件夾:

Public Function folderCreate(filePath As String) As Boolean 
    'define variables 
    Dim fsoFold As Object 

    'set file system object 
    Set fsoFold = CreateObject("Scripting.FileSystemObject") 

    If Not fsoFold.folderExists(filePath) Then 
     'check if folder exists 
     fsoFold.CreateFolder (filePath) 
    End If 

    folderCreate = True 

    Set fsoFold = Nothing 

End Function 

要檢查文件夾是否存在:

Public Function folderExists(folderPath As String) As Boolean 
    'define variables 
    Dim fso As Object 

    'set file system object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    'check if file exists 
    If fso.folderExists(folderPath) Then 
     folderExists = True 
    Else 
     folderExists = False 
    End If 

    Set fso = Nothing 

End Function 

要檢查文件是否存在:

Public Function fileExists(filePath As String) As Boolean 
    'define variables 
    Dim fso As Object 

    'set file system object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    'check if file exists 
    If fso.fileExists(filePath) Then 
     fileExists = True 
    Else 
     fileExists = False 
    End If 

    Set fso = Nothing 

End Function 

與此類似,使用movefile將其移動到新位置。

fso.movefile strFullPath, strFullBackUp 

編輯:繼子將通過給定的文件夾,並列出所有JPG圖片 - 這個代碼只是例子,如何找到文件,文件夾以及如何遞歸地通過他們去。

Public Sub listImages(folderPath As String) 

    'define variables 
    Dim fso As Object 
    Dim objFolder As Object 
    Dim objFolders As Object 
    Dim objF As Object 
    Dim objFile As Object 
    Dim objFiles As Object 
    Dim strFileName As String 
    Dim strFilePath As String 
    Dim myList As String 

    'set file system object 
    Set fso = CreateObject("Scripting.FileSystemObject") 

    'set folder object 
    Set objFolder = fso.GetFolder(folderPath) 

    'set files 
    Set objFiles = objFolder.files 
    Set objFolders = objFolder.subfolders 

    'list all images in folder 
    For Each objFile In objFiles 

     If Right(objFile.Name, 4) = ".jpg" Then 
      strFileName = objFile.Name 
      strFilePath = objFile.Path 
      myList = myList & strFileName & " - " & strFilePath & vbNewLine 
     End If 

    Next 

    'go through all subflders 
    For Each objF In objFolders 

     'call same procedure for each subfolder 
     Call listImages(objF.Path) 

    Next 

    Debug.Print myList 

    Set objFolder = Nothing 
    set objFolders = Nothing 
    Set objFile = Nothing 
    set objF = Nothing 
    Set fso = Nothing 


End Sub 
+0

'文件存在'功能是否也搜索子文件夾?我需要這樣做。 – Michael

+0

文件存在正在查看文件是否存在提供的完整路徑。像fileExists(「c:\ test \ image.jpg」) - 只有在C盤上的test文件夾中有image.jpg時纔會返回true。 – Velid

+0

我還需要搜索「c:\ test \」中的任何子文件夾。 – Michael