代码不起作用:使用vba将文件从一个目录复制到另一个目录

时间:2018-08-14 01:12:18

标签: excel vba excel-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

4 个答案:

答案 0 :(得分:0)

您太复杂了。

您无需使用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的文档。

我还建议花一些时间通读 all 所有标准VBA对象及其可用的方法/功能/属性/等,以了解内置的任务类型VBA和/或Office具有功能。

Here is the main page for Office VBA。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这对我有用:

Here is the documentation用于XCopy shell命令

class Country(models.Model):
    sigla   = models.CharField(max_length=5, unique=True)

    def __unicode__(self):
        return u'%s' % self.sigla

class City(models.Model):
    nome   = models.CharField(max_length=64, unique=True)
    nation = models.ForeignKey(Country, to_field='sigla', default='IT')

答案 3 :(得分:0)

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)

结束字幕