49

所以我有一个访问文件,我经常需要将它复制到另一个目录,替换上一个版本。我想使用 Excel 宏来实现这一点,并且还想在此过程中重命名文件。

例如

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

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

4

3 回答 3

80

如果您可以使用较少的选项,则此方法会更容易:

FileCopy source, destination
于 2014-03-05T16:23:39.947 回答
74

在 Scripting.FileSystemObject 中使用适当的方法。然后您的代码将更易于移植到 VBScript 和 VB.net。为了让您开始,您需要包括:

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

然后你可以使用

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

其中源和目标是文件的全名(包括路径)。

请参阅https://docs.microsoft.com/en-us/office/vba/Language/Reference/user-interface-help/copyfile-method

于 2013-06-05T14:54:21.280 回答
-1

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

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

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

于 2018-12-23T20:13:42.497 回答