使用VBA将一个文件移动到另一个文件夹里。
Sub move()
Dim fso As Object
Dim a As String, b As String, c As String
originalAdd = "C:\Users\Administrator\Desktop\"
targetAdd = "C:\Users\Administrator\Desktop\hhh\"
fileOperated = "1.txt"
'创建文件操作对象
Set fso = CreateObject("Scripting.FileSystemObject")
'如果原地址上存在需要被操作的文件
If fso.FileExists(originalAdd & fileOperated) Then
'则将原地址上的文件移到目标文件夹
fso.movefile originalAdd & fileOperated, targetAdd
Else
'如果文件不存在就报告不存在
MsgBox "文件不存在"
End If
'设置fso为空
Set fso = Nothing
End Sub
以上代码亲测没有bug,并且工作良好。
但是操作一个文件并不具有实用性,因此我们需要在循环中将一整个文件夹中的所有文件,都移入一个目标地址。这样可以保证被添加的新数据可以被正确的操作。
Sub move()
Dim fso As Object
Dim originalAdd As String
dim targetAdd As String
dim fileOperated As String
originalAdd = "C:\Users\Administrator\Desktop\amazon_japan\"
targetAdd = "C:\Users\Administrator\Desktop\hhh\"
' dir可以把文件夹里的所有文件名依次赋值给变量
fileOperated = dir(originalAdd & "*.csv")
do while fileOperated <> ""
if fileOperated = "" then
exit do
end if
'创建文件操作对象
Set fso = CreateObject("Scripting.FileSystemObject")
'如果原地址上存在需要被操作的文件
If fso.FileExists(originalAdd & fileOperated) Then
'则将原地址上的文件移到目标文件夹
fso.movefile originalAdd & fileOperated, targetAdd
Else
'如果文件不存在就报告不存在
MsgBox "文件不存在"
End If
' 取得下一个文件名
fileOperated = dir
loop
'设置fso为空
Set fso = Nothing
End Sub
这样移动文件的操作在哪里可以用到呢?今天我们美国站的运营XW在分析数据的时候告诉我,为什么每次添加新的数据都需要重新运行一次代码,难道不可以添加完新的数据之后就把新数据接在旧数据后面吗?于是我就有了这样的思路。
在amazon文件中保存源数据,操作完之后就移动到temp文件夹,再添加新数据的时候仍旧往amazon文件夹里扔csv文件,这样在excel中点刷新之后,就不用区分判断新旧文件。因为操作完的旧文件都已经在temp文件夹中,amazon文件夹里默认都是需要添加的新数据。
网友评论