复制/剪切/指定文件到指定路径,删除指定文件

如果想把excel表格中的文件批量复制到另一个指定的路径,可以用fso来完成。

目录

1.复制(filecopy)

2.剪切(name~as)

3.删除(Kill) 

1.复制(filecopy)

简单写法:Filecopy可以更简单就实现,不用创建object。

代码非常简单!

Sub Sample1()   
FileCopy "C:\Tmp\Test.txt", "C:\Work\Test.txt" 
End Sub

上面两个文件的名字一定要一样吗?答案是否定的。

 如果希望test文件复制到另外路径的时候,文件名字改掉也是可以的。

这样就会生成一个abc的txt。

Sub Sample1()   
FileCopy "C:\Tmp\Test.txt", "C:\Work\abc.txt" 
End Sub

由于经常和excel进行联动,如果路径填在excel的单元格里面了,可以如下进行。

Sub Sample3()
a = Cells(1, 1)
b = Cells(1, 2)
    FileCopy a, b
End Sub

如果想增加一个判定,判定目标文件夹是否已经存在该文件。

Sub Sample4()
    Dim ret As Long

    If Dir("D:\Test.txt") <> "" Then
        result = MsgBox("same file was already exited" & vbCrLf & "do you want to rewite it?", vbYesNo)
        If result = vbNo Then Exit Sub
    End If
a = Cells(1, 1)
b = Cells(1, 2)
    FileCopy a, b
End Sub

如果用FSO的方法就会复杂很多,参考如下。 

Sub Copy_File()
Set fs = CreateObject("Scripting.FileSystemObject")
    a = 1
    Do
    fs.CopyFile ActiveSheet.Cells(a, 1), ActiveSheet.Cells(a, 2) & "\"
    a = a + 1
    Loop Until ActiveSheet.Cells(a, 1) = ""
    Set fs = Nothing
End Sub

 

2.剪切(name~as)

PS:如果是剪切,copyfile换成movefile就可以了.

刚刚发现复制有简单的filecopy写法,那么是不是也有filemove呢?

答案是没有。

VBA里面文件的复制声明是有的,但是VBA里面没有内置文件移动的命令。
但是,可以用name声明来把文件移动到别的文件夹。

filecopy不一样中间不是逗号隔开,而是用的AS

本来这个功能用来是改名字的,但是我现在目的是移动,所有我可以不改动名字,只改动文件位置,最终达到移动文件的目的。以下代码就实现了test文本的移动。

Sub Sample1() 
Name "C:\Tmp\Test.txt" As "C:\Work\Test.txt" 
End Sub

以下是用FSO来实现文件的移动。代码相对要冗长许多。

Sub move_File()
Set fs = CreateObject("Scripting.FileSystemObject")
    a = 1
    Do
    fs.movefile ActiveSheet.Cells(a, 1), ActiveSheet.Cells(a, 2)
    a = a + 1
    Loop Until ActiveSheet.Cells(a, 1) = ""
    
    Set fs = Nothing
End Sub

3.删除(Kill) 

PS:如果是删除文件,简易方法就是用Kill+文件路径

sub file_kill()
kill "C:\test.txt"
end sub

 

复杂的方法是: 

copyfile换成deletefile,由于是直接删除,所以目标路径就不需要了。 

Sub Delete_File()
Set fs = CreateObject("Scripting.FileSystemObject")
    a = 1
    Do
    fs.deletefile ActiveSheet.Cells(a, 1)
    a = a + 1
    Loop Until ActiveSheet.Cells(a, 1) = ""
    Set fs = Nothing
End Sub

总结:用FSO的方法就是如下,不用这个比较好,会看就行,太复杂了。 

1.复制————————fs.copyfile target path ,destination path

2.剪切————————fs.movefile target path ,destination path

3.删除————————fs.deletefile target path

    原文作者:Kazefuku
    原文地址: https://blog.csdn.net/m0_59951054/article/details/124756743
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞