2014-10-07 211 views
0

我知道有一些關於此主題的類似文章。但是,我有一個與我在這裏看到的所有代碼都不同的代碼(當談論這個主題時)。使用vba將文件從一個文件夾複製到另一個文件夾

我收到的錯誤是說該文件找不到。但這是不可能的,因爲我正在使用fso.CopyFile中的SOURCE文件搜索文件。

所以我必須解決這個錯誤,如果可能的話,我想將文件複製到另一個文件夾並更改名稱。例如,如果我有文件「Excel.xls」,我想複製名稱「Excel_old.xls」,使用下面的代碼可能會有這種可能嗎?或者它太難了,它不值得?

這是代碼:

Sub CopyFiles() 
'Macro to copy all files modified yesterday 

Dim n As String, msg As String, d As Date 
Dim fso As Object 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set fils = fso.GetFolder("C:\Users\Desktop\Files\").Files 

'Verify all files in the folder, check the modification date and then copy 
'to another folder (named Old) 
For Each fil In fils 
    n = fil.Name 
    d = fil.DateLastModified 
    If d >= Date - 1 Then 
     file = n 
     'The following line is where the error occurs 
     fso.CopyFile "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\file" 

    End If 
Next fil 

End Sub 

回答

1

這是因爲fso.CopyFile "C:\Users\Desktop\Files\file", "C:\Users\Desktop\Files\Old\file"不是文件......這只是一個字符串,從它的外觀一個虛擬文件。

相反,如果行得

fso.CopyFile fil.Path, "C:\Users\Desktop\Files\Old\" & fil.name ...可能的工作。

更新補充:

我只是嘗試使用(替補爲以下計算機用戶名)以下,並取得了成功的一切移動到一個新的文件夾:

Sub test() 
    Dim fso As FileSystemObject 
    Dim fsoFiles As Files 
    Dim fil As File 

    Set fso = New FileSystemObject 
    Set fils = fso.GetFolder("C:\Users\<MY USERNAME>\Desktop\").Files 

    For Each fil In fils 
     n = fil.Name 
     d = fil.DateLastModified 
     fso.CopyFile fil.Path, fil.ParentFolder & "\test\" & fil.Name 

    Next fil 
End Sub 

這裏唯一的區別是,我用fil.ParentFolder來獲取我的桌面,然後將它扔到我在桌面上創建的新文件夾(在運行腳本之前),名稱爲「test」。

+0

這是正確的。但是在'fso.CopyFile'之後有一個錯字,根據OP的代碼它應該是'file'或'fil.name'。 – ZAT 2014-10-07 18:11:06

+0

大佬們!修復。 – JNevill 2014-10-07 18:14:26

+0

但我仍然有錯誤13類型不匹配 – dekio 2014-10-07 18:28:14

0

對於移動所有文件的文件夾中:

Sub MoveFiles() 

Dim MyFile As String 

MyFile = Dir("C:\AAAA\*.*") 

Do Until MyFile = "" 

Name "C:\AAAA\" & MyFile As "C:\AAA\" & MyFile 

MyFile = Dir 

Loop 

End Sub 
相關問題