VBA将文件从一个目录复制到另一个目录

时间:2013-06-05 14:48:01

标签: vba copy

所以我有一个我经常需要复制到另一个目录的访问文件,取代了最后一个版本。 我想使用Excel宏来实现这一点,并且还希望在此过程中重命名该文件。

E.g。

   fileName = "X:\Database\oldName.accdb"
   copyDestination = "Y:\dbstore\"
   newName = "newName.accdb"

有没有一种简单的方法可以做到这一点?

3 个答案:

答案 0 :(得分:68)

如果您选择的选项较少,这种方法会更容易:

FileCopy source, destination

答案 1 :(得分:57)

在Scripting.FileSystemObject中使用适当的方法。然后你的代码将更容易移植到VBScript和VB.net。为了帮助您入门,您需要包括:

Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")

然后你可以使用

Call fso.CopyFile(source, destination[, overwrite] )

其中source和destination是文件的全名(包括路径)。

请参阅http://msdn.microsoft.com/en-us/library/aa711216(v=vs.71).aspx

答案 2 :(得分:0)

一件事使我在使用此代码时头痛不已(可能会影响他人,我希望有人在这里留下这样的评论供我阅读):

  • 我的目标是创建一个动态访问仪表板,该仪表板需要更新其链接表。
  • 我使用上述复制方法将现有链接的CSV替换为它们的更新版本。
  • 从模块手动运行以上代码效果很好。
  • 从链接到CSV数据的表单中运行相同的代码会遇到运行时错误70(权限被拒绝),即使我的代码的第一步是关闭该表单(该表单也应该已解锁CSV文件,以便可以将其覆盖) )。
  • 我现在认为,尽管表单已关闭,但在执行与该表单相关联的VBA时,它仍将锁定过期的CSV文件。

我的解决方案是从与数据库一起打开的另一个隐藏表单中运行代码(按计时器事件)。