旧文件名在A列,新文件名在B列,如何使用VBA将目录中的旧文件替换为新文件?

旧文件名在A列,新文件名在B列,如何使用VBA将目录中的旧文件替换为新文件?,vba,excel,Vba,Excel,我有一个excel文件,它有两列,A列和B列 列A是已选择的路径和文件名,其中包含网络目录中每个文件名的路径: \\xxx\yyyy\gggg\ooo.pdf \\xxx\yyyy\gggg\ogh.pdf \\xxx\yyyy\gggg\pjo.pdf B列有新的文件名,这些文件名应替换旧的文件名ooo.pdf、ogh.pdf、pjo.pdf: fff.pdf fgh.pdf hjk.pdf 我有一个应该用新文件名重命名旧文件名的代码,但不知怎么的,它没有有效地工作。请让我知道以下代码有什

我有一个excel文件,它有两列,A列和B列

列A是已选择的路径和文件名,其中包含网络目录中每个文件名的路径:

\\xxx\yyyy\gggg\ooo.pdf
\\xxx\yyyy\gggg\ogh.pdf
\\xxx\yyyy\gggg\pjo.pdf
B列有新的文件名,这些文件名应替换旧的文件名ooo.pdf、ogh.pdf、pjo.pdf:

fff.pdf
fgh.pdf
hjk.pdf
我有一个应该用新文件名重命名旧文件名的代码,但不知怎么的,它没有有效地工作。请让我知道以下代码有什么问题:

Sub RenameFiles()
Dim xDir As String
Dim xFile As String
Dim xRow As Long
With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
If .Show = -1 Then
    xDir = .SelectedItems(1)
    xFile = Dir(xDir & Application.PathSeparator & "*")
    Do Until xFile = ""
        xRow = 0
        On Error Resume Next
        xRow = Application.Match(xFile, Range("A:A"), 0)
        If xRow > 0 Then
            Name xDir & Application.PathSeparator & xFile As _
            xDir & Application.PathSeparator & Cells(xRow, "B").Value
        End If
        xFile = Dir
    Loop
End If
End With
End Sub

请告诉我可以用目录中的新文件名替换旧文件名的VBA代码。

您可以使用FileSystemObject:

Sub Iterator()

    'Tools -> References -> Microsoft Scripting Runtime
    Dim fso As New FileSystemObject
    Dim fl As File
    Dim r As Long

    For r = 1 To 3
        Set fl = fso.GetFile(Cells(r, "A")) 'Path is taken from column "A"
        fl.Name = Cells(r, "B") 'Rename with name taken from column B
    Next

End Sub

将Name命令名oldfile用作newfile@YowE3K我想,OP需要在Excel而不是OS中重命名文件:@YowE3K如果你能让我知道完整的逻辑,那对我真的很有用。谢谢。@YowE3K我知道你叫什么名字。OP是否需要在Excel或OS中重命名?不像在IT系统中那样工作效率低下。b文件名未更改c我收到一个错误。。。。。。。。。。还是别的?谢谢你的回复。如果我想重命名多个文件名,并且源目录是网络目录,那么此代码是否有效?@user9070221是。只需将loop用作set File对象并将其重命名为.FYI,代码不会显示错误,但也不会更改任何内容。@user9070221我更新了代码。代码对我有用。我在共享文件夹上测试了它。