You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FSO.CopyFile复制文件时触发Error 70错误的技术问询

解决VBA FileSystemObject复制服务器文件失败的问题

你的代码核心问题是CopyFile方法的目标参数格式不正确,结合你描述的服务器路径场景,按以下步骤修复:

问题根源

FileSystemObject.CopyFile方法的目标参数如果是文件夹路径,必须满足两个条件之一:

  1. 路径结尾带有路径分隔符(Windows下用\);
  2. 明确指定目标文件的完整路径(文件夹+文件名)。

你当前只传入Application.ThisWorkbook.path,如果该路径结尾没有\,FileSystemObject会误认为这是一个文件名而非文件夹,导致复制失败。

修复后的代码

方案一(通用安全版)

自动处理路径分隔符,同时提取源文件名作为目标文件名:

Sub copy_to_local()
    Dim twb As Workbook: Set twb = ThisWorkbook
    Dim tws As Worksheet: Set tws = twb.Worksheets(1)
    Dim fs As Object: Set fs = CreateObject("Scripting.FileSystemObject")
    
    Dim sourcePath As String
    sourcePath = Trim(tws.Cells(14, 2).Value) '去除路径前后可能的空格
    
    '验证源文件存在
    If Not fs.FileExists(sourcePath) Then
        MsgBox "源文件不存在,请检查B14单元格路径"
        Exit Sub
    End If
    
    Dim targetFolder As String
    targetFolder = twb.Path
    
    '确保目标文件夹路径以路径分隔符结尾
    If Right(targetFolder, 1) <> Application.PathSeparator Then
        targetFolder = targetFolder & Application.PathSeparator
    End If
    
    '执行复制,自动使用源文件名作为目标文件名
    fs.CopyFile sourcePath, targetFolder & fs.GetFileName(sourcePath), True
    MsgBox "复制完成"
End Sub

方案二(简化版)

直接给目标路径加上\,适用于确定路径不含特殊字符的场景:

Sub copy_to_local()
    Dim twb As Workbook: Set twb = ThisWorkbook
    Dim tws As Worksheet: Set tws = twb.Worksheets(1)
    Dim fs As Object: Set fs = CreateObject("Scripting.FileSystemObject")
    
    fs.CopyFile tws.Cells(14, 2).Value, twb.Path & "\", True
End Sub

你遇到的其他问题解释

  • 用"./"作为目标路径无反应:VBA中不识别"./"作为相对路径,FileSystemObject无法解析该路径,因此不会执行复制操作;
  • 加引号触发Error 59:手动给路径加引号会被当成路径的一部分,导致路径无效,FileSystemObject不需要额外给路径加引号,它会自动处理带空格的路径;
  • 能创建文件但无法复制:说明目标目录有读写权限,问题完全出在CopyFile的参数格式,而非权限问题。

额外排查点

  • 确认源文件没有被其他程序锁定(比如记事本、编辑器打开),锁定状态下无法复制;
  • 检查B14单元格的路径是否包含不可见字符(比如换行、全角空格),可以用Trim函数去除前后空格。

内容的提问来源于stack exchange,提问作者edwylin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 05:12:21