美文网首页
如何使用VBA移动文件

如何使用VBA移动文件

作者: 王伯卿 | 来源:发表于2018-03-02 22:56 被阅读0次

使用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文件夹里默认都是需要添加的新数据。

相关文章

网友评论

      本文标题:如何使用VBA移动文件

      本文链接:https://www.haomeiwen.com/subject/cwezxftx.html