我是VBA新手(在java中只有一點培訓),但是在這裏的其他帖子的幫助下組裝了這一點的代碼,並且碰到了一堵牆。循環瀏覽文件夾,使用VBA重命名符合特定條件的文件?
我正在嘗試編寫代碼,它將循環訪問文件夾中的每個文件,測試每個文件是否符合特定條件。如果滿足條件,則應編輯文件名,覆蓋(或先刪除)具有相同名稱的任何現有文件。這些新重命名文件的副本應該被複制到不同的文件夾中。我相信我非常接近,但是我的代碼在運行時拒絕循環所有文件和/或使Excel崩潰。請幫助? :-)
Sub RenameImages()
Const FILEPATH As String = _
"C:\\CurrentPath"
Const NEWPATH As String = _
"C:\\AditionalPath"
Dim strfile As String
Dim freplace As String
Dim fprefix As String
Dim fsuffix As String
Dim propfname As String
Dim FileExistsbol As Boolean
Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
strfile = Dir(FILEPATH)
Do While (strfile <> "")
Debug.Print strfile
If Mid$(strfile, 4, 1) = "_" Then
fprefix = Left$(strfile, 3)
fsuffix = Right$(strfile, 5)
freplace = "Page"
propfname = FILEPATH & fprefix & freplace & fsuffix
FileExistsbol = FileExists(propfname)
If FileExistsbol Then
Kill propfname
End If
Name FILEPATH & strfile As propfname
'fso.CopyFile(FILEPATH & propfname, NEWPATH & propfname, True)
End If
strfile = Dir(FILEPATH)
Loop
End Sub
如果它是有幫助的,文件名作爲啓動_ ABC_mm_dd_hh_Page#,JPG,目標是削減下來,ABCPage#的.jpg
感謝這麼多!
我認爲在開始處理它們之前首先收集數組或集合中的所有文件名是個好主意,尤其是在您要重命名它們之前。如果你不這樣做,不能保證你不會混淆Dir(),導致它跳過文件或兩次處理「相同」文件。在VBA中也不需要在字符串中避免反斜槓。 – 2014-11-09 02:43:44
謝謝Tim! 我不知道如何在VBA中做到這一點,但我認爲你所說的基於我對Java的最基本的瞭解是非常直觀的。如果我無法獲取當前的代碼,我會嘗試。 您有沒有可能輕鬆提供幫助以按照您所說的方式創建陣列? – 2014-11-13 18:11:25