Vba 通过 fso 对象将文件从 a 移动到 b

问题描述 投票:0回答:1

我有一个 Excel 中文件名开头的列表, 我想制作一个宏,将它们从一个定义的目录移动到另一个目录 文件名的命名方式如下 AAAAXXX AAAA-是我将放入 Excel 中的唯一数字 XXX- 也是唯一的数字,但我希望宏在移动/复制文件时跳过它们 我尝试在文件名后使用

*
,但它将其读取为文件名的一部分,而不是作为通配符 我发现当我将变量放入其中时,
Fso.Movefile
不起作用。我该如何解决它? 或者我确实需要使用其他命令 不使用库可以做到吗?

Sub movingfilename()
    Dim a As String
    Dim cell As Range
    Dim locationstart As String
    Dim locationend As String
    Dim filename As String
    Dim notfoundfiles As New Collection
    Dim message As String
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    locationstart = "G:\Test\start\" & filename
    locationend = "G:\Test\stop\" & filename

    For Each cell In Range("A2:A" & Cells(Rows.Count, "A").End(-4162).Row)
        If Not IsEmpty(cell) Then
        filename = cell.Value
        fso.MoveFile "G:\Test\start\filename*", "G:\Test\stop\"
    End If
    Next cell
End Sub

enter image description here

我想将文件从位置a移动到位置b。我有他们名字的开头,希望 excel 能够让他们忽略名字的其余部分

excel vba file wildcard fso
1个回答
0
投票

您的代码无法正常工作,因为您错误地构造了代码参数,而不是因为它不接受变量。

根据您的需要调整以下工作代码:

Option Explicit
Sub movingFilename()
    Dim fso As FileSystemObject
    Dim locationStart As String
    Dim locationEnd As String
    Dim fileName As String
    Dim c As Range
    
    
locationStart = "G:\Test\start\"
locationEnd = "G:Test\end\"

Set fso = New FileSystemObject

With ThisWorkbook.Worksheets("Sheet5")
    For Each c In Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
        If Not IsEmpty(c) Then
            fileName = c.Value & "*"
            fso.MoveFile locationStart & fileName, locationEnd
        End If
    Next c
End With
            
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.