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

VBA按文本框输入文件名复制指定PDF文件至目标文件夹求助

VBA代码修正方案

原代码的核心问题

  • 错误地将文本框字符串赋值给File类型变量MyFile,导致后续逻辑混乱
  • 目标文件夹路径错误拼接了文件名,导致复制时生成错误路径并强制重命名文件
  • 遍历源文件夹所有文件,未做指定文件筛选,因此复制了全部文件

修正后的代码

Sub CopyTargetPDF()
    Dim MyFSO As FileSystemObject
    Dim targetFileName As String
    Dim sourceFilePath As String
    Dim destFilePath As String
    Dim sourceFolder As String
    Dim destFolder As String
    
    ' 获取文本框输入的文件名(需确保包含.pdf后缀)
    targetFileName = txtLedger.Value
    
    ' 定义源文件夹和目标文件夹的固定路径
    sourceFolder = "F:\4-2022\"
    destFolder = "F:\DELEGATION APPLICATION\"
    
    ' 拼接完整的源文件路径与目标文件路径
    sourceFilePath = sourceFolder & targetFileName
    destFilePath = destFolder & targetFileName
    
    ' 创建FileSystemObject对象
    Set MyFSO = New Scripting.FileSystemObject
    
    ' 先检查源文件是否存在,避免报错
    If MyFSO.FileExists(sourceFilePath) Then
        ' 复制文件,保留原文件名;OverwriteFiles设为True可覆盖同名文件
        MyFSO.CopyFile Source:=sourceFilePath, Destination:=destFilePath, OverwriteFiles:=False
        MsgBox "文件复制成功!"
    Else
        MsgBox "源文件夹中未找到指定文件:" & targetFileName
    End If
    
    ' 释放对象资源
    Set MyFSO = Nothing
End Sub

关键修正说明

  • 改用字符串变量存储文本框输入的文件名,避免类型不匹配错误
  • 直接拼接指定文件的完整路径,无需遍历整个源文件夹,提升执行效率
  • 增加文件存在性检查,提前拦截因文件不存在导致的运行报错
  • 目标路径直接使用「目标文件夹+原文件名」的组合,确保复制后保留原文件名

内容的提问来源于stack exchange,提问作者Funny Memo Ms

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:03:12