Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将特定数量的(随机)文件夹移动到VBA中的另一个文件夹_Excel_Vba - Fatal编程技术网

Excel 将特定数量的(随机)文件夹移动到VBA中的另一个文件夹

Excel 将特定数量的(随机)文件夹移动到VBA中的另一个文件夹,excel,vba,Excel,Vba,在本文中,一位用户询问如何使用VBA从另一个文件夹中的大量文件中复制25个随机文件 我的问题是同一个方向,但有点不同: 如何将特定数量的文件夹(不是pdf等文件)从一个文件夹移动到另一个文件夹(而不是复制) 关于我的项目的更多信息: 源文件夹包含不同数量的文件夹,这些文件夹本身包含一个pdf文件 与随机移动特定数量的文件夹不同,我更喜欢根据字母排序移动前30个文件夹(例如,只移动前30个文件夹,然后在第二次执行时从源文件夹中剩余的文件夹中移动下30个文件夹) 这是原始帖子中的代码,其中随机复

在本文中,一位用户询问如何使用VBA从另一个文件夹中的大量文件中复制25个随机文件

我的问题是同一个方向,但有点不同:

如何将特定数量的文件夹(不是pdf等文件)从一个文件夹移动到另一个文件夹(而不是复制)

关于我的项目的更多信息:

  • 源文件夹包含不同数量的文件夹,这些文件夹本身包含一个pdf文件
  • 与随机移动特定数量的文件夹不同,我更喜欢根据字母排序移动前30个文件夹(例如,只移动前30个文件夹,然后在第二次执行时从源文件夹中剩余的文件夹中移动下30个文件夹)
这是原始帖子中的代码,其中随机复制了25个文件:

Dim FSO As Object, folder a Object, file as Object
Set FSO = CreateObject("scripting.filesystemobject")
Set folder = fso.GetFolder(FromPath)
Dim fList() As String, i As Long
ReDim fList(1 To folder.Files.Count)

For Each file In folder.Files
    i = i + 1
    fList(i) = file.Name
Next file

Dim copyCount As Long, fIndex As Long
copyCount = 0
Do While copyCount < 25 And copyCount < folder.Files.Count
    fIndex = Int(Rnd * folder.Files.Count) + 1
    If fList(fIndex) <> "" Then
        Set file = folder.Files(CStr(fList(fIndex)))
        file.Copy ToPath, True
        fList(fIndex) = ""    '  Mark this file as copied to prevent that it is picked a 2nd time
        copyCount = copyCount + 1
    End If
Loop
Dim FSO As Object,folder a Object,file As Object
设置FSO=CreateObject(“scripting.filesystemobject”)
Set folder=fso.GetFolder(FromPath)
Dim fList()作为字符串,i作为
重拨fList(1到folder.Files.Count)
对于文件夹.Files中的每个文件
i=i+1
fList(i)=文件名
下一个文件
变暗副本计数为长,fIndex为长
拷贝数=0
当copyCount<25和copyCount
我成功地将执行方法“file.copy ToPath,True”更改为“file.Move ToPath”,并在数组中计算和保存文件夹名(而不是文件名)

但是,在执行sub 2次之后,脚本不会移动它应该移动的文件夹。它只移动29个文件夹,而不是36个文件夹,以此类推

我不明白问题从何而来。它与数组和索引有关吗


非常感谢您的帮助:-)

您提供的代码是否有效?我看不出您在哪里设置了
FSO
?谢谢您的提示。上面发布的代码实际上是对如何复制25个随机文件的问题的回答(参见上面提到的文章的链接)。看起来,给出答案的用户忘记了包含“Set FSO=CreateObject(“scripting.filesystemobject”)”,正如您正确注意到的那样。我插入了代码行。基于这些信息,你或者其他任何人能帮我重写代码来移动(而不是复制)文件吗:-)看看帖子。希望它能帮助谢谢你的链接。我看了那里的问题,我无法将我的项目转移到那里发布的代码。尽管问题中的代码似乎与我的项目方向一致,但我并不真正理解线程中提出的解决方案。如果有人能帮我,那真是太好了:-)