2013-10-16 79 views
0

我有这样的代码:Excel宏 - 移动文件(修复代码)

Sub MoveFiles() 
Dim d As String, ext, x 
Dim srcPath As String, destPath As String, srcFile As String 
srcPath = "C:\test\" 
destPath = "C:\test2\" 
ext = Array("*.csv", "*.xls") 
For Each x In ext 
d = Dir(srcPath & x) 
    Do While d <> "" 
     srcFile = srcPath & d 
     FileCopy srcFile, destPath & d 
     Kill srcFile 
     d = Dir 
    Loop 
Next 
End Sub 

但它删除srcPath每一个文件。我只需要它删除activeworkbook.name而不是每一个。我想了解这段代码好一个小时,但无法弄清楚如何使它不循环,并且仍然按照它应该做的事情做。

我欣赏这个

+0

'我只需要它删除activeworkbook.name,而不是每一个.'如果你正在运行它的代码,你如何删除activeworkbook? –

+0

,因为它已经将它保存到另一个地方。我只是指定了什么名字是 –

回答

0

一些帮助如果你只是想杀死一个特定的文件,那么为什么要使用一个循环,杀死它的迭代每一个文件?

如果你想杀死一个特定的文件

,仍然环,那么你需要添加一个“如果”条款 类似:

if srcFile = activewindow.name then 
    kill 
else 
    do nothing 
end if 

还是我让你错了吗?

+0

不,它不是关于杀死文件。它关于首先将文件移动到指定的文件夹,并从之前的文件夹中删除文件 –

+0

了解它。它会杀死每个文件,而不是在当前迭代循环中杀死文件。 – udigold

+0

我试过了你的代码。它将文件复制到目标文件夹,然后将其从源路径中删除。你想杀的是什么?你不能杀死活动工作表,它是受保护的,因为它是开放的并且运行它的代码。 – udigold