我已经编写了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
答案 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)
结束字幕