【问题标题】:Moving folders to another directory将文件夹移动到另一个目录
【发布时间】:2020-03-10 07:38:17
【问题描述】:

我最近在这里发布了一个关于将文件移动到另一个目录 (Moving files to another directory) 的问题,现在我想移动文件夹,然后将其存档。

布局与A中的现有文件夹相同,B中的目标和C列确认是否完成。

提供的代码是

Sub move_files()
    Dim i As Long
    With ActiveSheet
        For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            Err.Clear
            On Error Resume Next
            Name (.Cells(i, 1)) As .Cells(i, 2) & "\" & StrReverse(Split(StrReverse(.Cells(i, 1)), "\")(0))
            If Err = 0 Then .Cells(i, 3) = "YES" Else .Cells(i, 3) = "NO"
            On Error GoTo 0
        Next
    End With
End Sub

鉴于我正在尝试移动整个列,是否有人知道上述内容是否可以用于移动文件夹,因为它目前仅适用于文件。我在网上搜索过,但通常只有一个文件。

【问题讨论】:

  • 你做过研究吗?我的意思是,如果您在 Google 上搜索 "vba move folder",您会发现大量如何移动完整文件夹的示例。在FileSystemObject object 中还有MoveFolder method。仔细阅读它们并自己尝试一下。如果您遇到困难或错误,请显示您尝试过的代码。否则,这只是要求我们为您完成工作。
  • 太多了,有些可以移动文件夹,但不能从列表中移动,并且必须指定路径,因此对于数千个文件来说并不好。我也没有看到显示错误报告。

标签: excel vba directory move


【解决方案1】:

这是一个仅移动文件夹的修订版。希望它会奏效。

Sub move_folders()
  Dim i As Long
  Dim oFSO As Object
  Dim sep As String

  Set oFSO = CreateObject("Scripting.FileSystemObject")
  With ActiveSheet
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
      Err.Clear
      If Left(StrReverse(.Cells(i, 2)), 1) = "\" Then sep = "" Else sep = "\"
      On Error Resume Next
      oFSO.MoveFolder .Cells(i, 1), .Cells(i, 2) & sep & StrReverse(Split(StrReverse(.Cells(i, 1)), "\")(0))
      If Err = 0 Then .Cells(i, 3) = "YES" Else .Cells(i, 3) = "NO"
      On Error GoTo 0
    Next
  End With
End Sub

【讨论】:

  • 这个人很快谢谢你!我不太了解 FSO 部分,但会在周末阅读更多内容,看看是否能弄明白。非常感谢斯科特
猜你喜欢
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
相关资源
最近更新 更多