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
相关产品推荐
相关产品推荐

