在Access中使用通配符实现文件复制的技术求助
Access批量重命名复制文件解决方案
针对你需要将旧地块前缀的文件批量复制并重命名为新前缀的需求,直接用FileCopy、FSO.CopyFile或Shell执行DOS命令无法实现的原因是:
FileCopy不支持通配符FSO.CopyFile仅支持将通配符匹配的文件复制到文件夹,无法直接批量重命名- DOS的
copy c:\1\ABC123-*.txt c:\1\ABC456-*.txt实际是将所有匹配文件合并为一个文件,并非逐个重命名复制
以下是简单直接的VBA实现代码,无需额外依赖:
核心代码示例
Sub CopyRenameFiles() Dim strOldPrefix As String Dim strNewPrefix As String Dim strFolder As String Dim strSourceFile As String Dim strTargetFile As String ' 配置参数 strFolder = "C:\1\" ' 文件所在文件夹 strOldPrefix = "ABC123-" ' 旧地块前缀 strNewPrefix = "ABC456-" ' 新地块前缀 ' 获取第一个匹配的文件 strSourceFile = Dir(strFolder & strOldPrefix & "*.*") ' 遍历所有匹配文件 Do While strSourceFile <> "" ' 替换文件名中的旧前缀为新前缀 strTargetFile = strFolder & Replace(strSourceFile, strOldPrefix, strNewPrefix) ' 执行复制 FileCopy strFolder & strSourceFile, strTargetFile ' 获取下一个文件 strSourceFile = Dir Loop End Sub
针对PDF文件的适配
如果是处理地块相关的PDF(比如1234-deed.pdf→5678-deed.pdf),只需修改参数即可:
Sub CopyRenamePDFs() Dim strOldPrefix As String Dim strNewPrefix As String Dim strFolder As String Dim strSourceFile As String Dim strTargetFile As String strFolder = "C:\你的PDF文件夹路径\" strOldPrefix = "1234-" strNewPrefix = "5678-" strSourceFile = Dir(strFolder & strOldPrefix & "*.pdf") Do While strSourceFile <> "" strTargetFile = strFolder & Replace(strSourceFile, strOldPrefix, strNewPrefix) FileCopy strFolder & strSourceFile, strTargetFile strSourceFile = Dir Loop End Sub
使用说明
- 打开Access数据库,按下
Alt+F11打开VBA编辑器 - 插入一个新模块,将上述代码粘贴进去
- 根据你的实际路径和前缀修改参数
- 运行对应的Sub过程即可完成批量复制重命名
这个方法逻辑简单,直接遍历匹配文件逐个处理,完全满足你无需扩展性的需求。
内容的提问来源于stack exchange,提问作者Flea77
相关产品推荐
相关产品推荐

