【问题标题】:Moving files to a folder, Error 13 Type mismatch将文件复制到文件夹,错误 13 类型不匹配
【发布时间】:2022-01-08 20:46:29
【问题描述】:

因此,我从字面上向我展示了方法,包括有关如何明智地实现我的手段 VBA 的代码,我得到了很大的帮助。现在我真的处于最后阶段,不明白为什么我不能将文件移动到创建的文件夹中。我每次都遇到不匹配错误。目的是创建一个以文件前缀命名的文件夹,如果它不存在(这似乎工作)并将文件复制到该文件夹​​(我得到不匹配错误)这里是代码:

Sub loopf()
    Dim AcceptedPrefixes As Object
    Set AcceptedPrefixes = CreateObject("Scripting.Dictionary")
    
    Dim PrefixRange As Range
    Set PrefixRange = ThisWorkbook.Sheets(1).Range("B2:B368")
    
    Dim Cell As Range
    For Each Cell In PrefixRange.Cells
        If Cell <> "" And Not AcceptedPrefixes.exists(Cell.Value) Then
            AcceptedPrefixes.Add CStr(Cell.Value), 0
        End If
    Next

    Dim Directory As String
    Directory = "C:\TEST\"
    
    Dim fsoFSO
    Set fsoFSO = CreateObject("Scripting.FileSystemObject")
    
    Dim filen As Variant
    filen = Dir(Directory)
    While filen <> ""
        Dim FilePrefix As String
        FilePrefix = "" & (Split(filen, "_")(0)) & ""
        
       If Not AcceptedPrefixes.exists(FilePrefix) Then
        Kill Directory & filen
 Else
 If fsoFSO.FolderExists("C:\TEST\" & FilePrefix) Then
 'DO NOTHING
           
      Else: fsoFSO.CreateFolder ("C:\TEST\" & FilePrefix) 'ELSE CREATE A FOLDER
      fso.MoveFile "C:\TEST\ & Filen", "C:\TEST\ & FilePrefix&" \ "" ' HERE i WANT TO MOVE THE FILES TO TRHE CREATED FOLDER OR EXISTING FOLDER
        End If
        
        End If
        filen = Dir
    Wend
End Sub

【问题讨论】:

  • "C:\TEST\ & Filen" 需要是 "C:\TEST\" & Filen 和第二个 "C:\TEST\" & FilePrefix & "\"
  • 我按照建议做了,在运行代码并进入“fsoMoveFile”行并得到“运行时错误 424”之前没有出现任何错误

标签: vba file fso


【解决方案1】:

好的。我最终确实解决了它——就像它完成了它的工作一样。而不是fso.MoveFile,我使用Name,它符合我的目的。仍然不清楚为什么fso.Movefile 不起作用。

如果有人感兴趣,整个代码如下。

Sub loopf()
    Dim AcceptedPrefixes As Object
    Set AcceptedPrefixes = CreateObject("Scripting.Dictionary")
    
    Dim PrefixRange As Range
    Set PrefixRange = ThisWorkbook.Sheets(1).Range("a1:a3")
    
    Dim Cell As Range
    For Each Cell In PrefixRange.Cells
        If Cell <> "" And Not AcceptedPrefixes.exists(Cell.Value) Then
            AcceptedPrefixes.Add CStr(Cell.Value), 0
        End If
    Next

    Dim Directory As String
    Directory = "C:\TEST\"
    
    Dim fsoFSO
    Set fsoFSO = CreateObject("Scripting.FileSystemObject")
    
    Dim filen As Variant
    filen = Dir(Directory)
    While filen <> ""
        Dim FilePrefix As String
        FilePrefix = "" & (Split(filen, "_")(0)) & ""
        
       If Not AcceptedPrefixes.exists(FilePrefix) Then
        Kill Directory & filen
        Else
        If fsoFSO.FolderExists("C:\TEST\" & FilePrefix) Then
        Name "C:\TEST\" & filen As "C:\TEST\" & FilePrefix & "\" & filen
           
      Else: fsoFSO.CreateFolder ("C:\TEST\" & FilePrefix)
      'FSO.MoveFile "C:\TEST\" & filen, "C:\TEST\" & FilePrefix & "\" ---- not working
      Name "C:\TEST\" & filen As "C:\TEST\" & FilePrefix & "\" & filen
      End If
        
        End If
        filen = Dir
    Wend
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多