首页 > 解决方案 > 代码不起作用:使用 vba 将文件从一个目录复制到另一个目录

问题描述

我已经编写了一个 VBA 代码来将文件从一个目录复制到另一个目录;但我不知道为什么它不起作用。有任何想法吗?我知道如何使用 FileSystemObject 来做,但我想学习——用 SHELL 来做。

Sub copy_file()

    Dim dirPath As String, srcFile As String

    dirPath = "E:\Download\"
    srcFile = ThisWorkbook.Path & "\" & ThisWorkbook.Name

    Shell ("cmd /c copy /y """ & srcFile & " " & dirPath & """")

End Sub

标签: vbaexcel

解决方案


srcFile与您用来保存 vba 代码的文件相同,因此该文件已打开。在这种情况下,Windows shell 复制命令将无法正常工作。您可以使用 ActiveWorkbook.SaveAs 方法复制打开的源文件。进一步阅读:如何在 vba 代码中“另存为”,用日期戳保存我当前的 Excel 工作簿? 进一步的问题:您的活动工作簿将立即重命名,因此您必须关闭它。为了避免在退出前保存为对话框,请阅读该教程: https: //support.microsoft.com/en-us/help/213428/how-to-suppress-save-changes-prompt-when-you-close -a-workbook-in-excel


推荐阅读