代码不起作用:使用 vba 将文件从一个目录复制到另一个目录
Posted
技术标签:
【中文标题】代码不起作用:使用 vba 将文件从一个目录复制到另一个目录【英文标题】:code not working: Copy file From one directory to another with vba 【发布时间】:2018-08-14 01:12:18 【问题描述】:我编写了一个 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
【问题讨论】:
“不工作” - 这是什么意思?发生了什么事? 【参考方案1】:你太复杂了。
您无需为此使用 Shell 并通过命令行。
有一个内置命令:FileCopy
示例
此示例使用FileCopy
语句将一个文件复制到另一个文件。出于本示例的目的,假设这是一个包含一些数据的文件。
Dim SourceFile, DestinationFile
SourceFile = "SRCFILE" ' Define source file name.
DestinationFile = "DESTFILE" ' Define target file name.
FileCopy SourceFile, DestinationFile ' Copy source to target.
阅读 FileCopy
at the source 的文档。
我还建议花几分钟时间阅读所有标准 VBA 对象及其可用的方法/函数/属性/等,以了解内置的任务类型VBA 和/或 Office 的功能。
Here is the main pageOffice VBA 官方文档。
【讨论】:
谢谢你的回复,但是我想用shell命令来做,我已经知道如何使用FileCopy我想知道一些新的东西,你的代码也会帮助我。【参考方案2】:srcFile 与您用来保存 vba 代码的文件相同,因此该文件已打开。在这种情况下,Windows shell 复制命令将无法正常工作。 您可以使用 ActiveWorkbook.SaveAs 方法复制打开的源文件。 延伸阅读:How to do a "Save As" in vba code, saving my current Excel workbook with datestamp? 进一步的问题:您的活动工作簿将立即重命名,因此您必须关闭它。为了避免在退出前保存为对话框,请阅读该教程:https://support.microsoft.com/en-us/help/213428/how-to-suppress-save-changes-prompt-when-you-close-a-workbook-in-excel
【讨论】:
【参考方案3】:Shell("cmd /c copy /y """ & srcFile & " " & dirPath & """")
报价问题。您应该检查您的路径并尝试以下代码:
Sub copy_file()
Dim dirPath As String, srcFile As String
dirPath = "E:\Download\"
srcFile = ThisWorkbook.Path & "\" & ThisWorkbook.Name
MsgBox "cmd /c copy /y " & srcFile & " " & dirPath
Shell ("cmd /c copy /y " & srcFile & " " & dirPath)
结束子
【讨论】:
谢谢,我会尝试并让您知道。 感谢您的帮助,我尝试了您的方法,但没有成功。 能否提供详细的错误信息? 您是否将 Excel 工作表保存到特殊位置?以上是关于代码不起作用:使用 vba 将文件从一个目录复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章
VBA:循环遍历各种Excel文件并将列复制到主文件中[关闭]
插入代码时,打开事件中的 Excel 2010 vba EnableEvent 不起作用