方法File.Move(path)花费的时间太长

时间:2015-06-03 10:34:16

标签: excel-vba vba excel

我在excell

中有这部分代码
  If FSO.fileExists(OldName) Then ' FSO is fileSystemObject
      Cells(1, 3).Value = "Passed"
      Set source = FSO.getfile(OldName)
      source.Move (NewName)
  end if

其中OldName类似于“C:\ doc \ file.txt” NewName类似于“C:\ doc \ NewName \ file.txt”

目录C:\ doc \ NewName包含~20 000个txt文件,行source.Move (NewName)需要大约4分钟才能执行(文件大小为2kB,计算机真的很旧......)
如果我使用空目录,代码会在一秒钟内运行。

我不允许使用其他目录,我也无法从中删除任何文件。

任何人都可以解释为什么需要这么长时间,以及减少时间的选项是什么?

2 个答案:

答案 0 :(得分:0)

你可以试试这个

If FSO.fileExists(OldName) Then ' FSO is fileSystemObject
  Cells(1, 3).Value = "Passed"
  Set source = FSO.getfile(OldName)
  Name OldName As NewName

结束如果

<强>更新

好的,你可以试试这个:

If Len(Dir(OldName)) = 0 Then
    MsgBox "File does not exist"
Else
    Name OldName As NewName
End If

答案 1 :(得分:0)

所以我仍然不知道为什么需要这么长时间,但我找到了解决方法。

我使用这种方法来复制文件

* {
    margin: 0;
    padding: 0;
    border: 0;
}

body {
    padding: 10px;
}

.row {
    position: relative;
}

.row h1 {
    font: bold 20px/2 Sans-Serif;
    background-color: #222;
    color: white;
    display: inline-block;
    padding: 0 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.row h1:before {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 3px;
    background-color: #222;
}

这会运行不可见的命令控制台来移动文件。 VBA不会等待命令行完成并继续执行其他任务。