我正在使用Access 2013.我有一張表中的圖像列表。然後我需要搜索一組文件夾(包括子文件夾),找到這些圖像並將它們複製到一個新目錄中。包含圖像名稱的表不會引用文件路徑。MS Access VBA從表中搜索圖像文件名,搜索並複製它們
達到此目的的最佳方法是什麼?是否有可能循環遍歷表並執行搜索,或者我是否可以將其分解並手動找到每個文件並更新一個標記以表明它存在,然後返回並複製它們?
不知道如何做到這一點,但將不勝感激任何想法。
感謝。
我正在使用Access 2013.我有一張表中的圖像列表。然後我需要搜索一組文件夾(包括子文件夾),找到這些圖像並將它們複製到一個新目錄中。包含圖像名稱的表不會引用文件路徑。MS Access VBA從表中搜索圖像文件名,搜索並複製它們
達到此目的的最佳方法是什麼?是否有可能循環遍歷表並執行搜索,或者我是否可以將其分解並手動找到每個文件並更新一個標記以表明它存在,然後返回並複製它們?
不知道如何做到這一點,但將不勝感激任何想法。
感謝。
對於一些進口計劃,我不得不處理文件,創建副本等等,我創建了一些功能,幫助過程中,你可能會發現他們的一些用途:
從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
文件系統objet +遍歷記錄集。 – vacip
好的,我會給它去 – Michael