请求编写VBA代码:批量复制指定文件夹工作簿数据至目标工作簿
VBA代码实现指定范围跨工作簿复制粘贴
以下是满足你需求的完整VBA代码,针对新手做了关键注释,方便理解:
Sub CopySpecificRangeToTargetSheets() Dim sourceFolderPath As String Dim sourceWB As Workbook Dim targetWS As Worksheet Dim i As Integer Dim sourceFileName As String ' 关闭屏幕更新,提升运行速度 Application.ScreenUpdating = False ' ************************* ' 请修改为你的实际文件夹路径 sourceFolderPath = "C:\你的文件夹路径\" ' ************************* ' 循环处理01到10号工作表 For i = 1 To 10 ' 格式化数字为两位(01、02...10) Dim sheetNum As String sheetNum = Format(i, "00") ' 检查目标工作表是否存在 On Error Resume Next Set targetWS = ThisWorkbook.Worksheets(sheetNum) On Error GoTo 0 If Not targetWS Is Nothing Then ' 拼接源工作簿文件名 sourceFileName = "Workbook_A_" & sheetNum & ".xlsx" ' 如果是xls格式,改成.xls ' 检查源文件是否存在 If Dir(sourceFolderPath & sourceFileName) <> "" Then ' 打开源工作簿(后台打开,不显示) Set sourceWB = Workbooks.Open(Filename:=sourceFolderPath & sourceFileName, ReadOnly:=True) ' 复制指定区域:A200:E600 sourceWB.Worksheets(1).Range("A200:E600").Copy ' 粘贴到目标工作表的C6起始位置 targetWS.Range("C6").PasteSpecial Paste:=xlPasteValuesAndNumberFormats ' 只粘贴值和格式,也可以用xlPasteAll粘贴全部 ' 关闭源工作簿,不保存 sourceWB.Close SaveChanges:=False ' 清除剪贴板 Application.CutCopyMode = False Else ' 如果源文件不存在,弹出提示 MsgBox "未找到文件:" & sourceFileName, vbExclamation End If Else MsgBox "目标工作表" & sheetNum & "不存在", vbExclamation End If Next i ' 恢复屏幕更新 Application.ScreenUpdating = True MsgBox "数据复制完成!", vbInformation End Sub
关键步骤说明
- 设置文件夹路径:把代码里的
C:\你的文件夹路径\替换成你实际存放Workbook_A_XX的文件夹路径,注意末尾要加反斜杠\。 - 循环处理工作表:通过
Format(i, "00")把数字转换成两位格式,匹配你的文件名和工作表名。 - 文件存在检查:用
Dir函数判断源文件是否存在,避免报错。 - 后台打开源文件:设置
ReadOnly:=True以只读方式打开,防止占用文件;不显示打开窗口提升效率。 - 粘贴选项:代码里用
xlPasteValuesAndNumberFormats只粘贴值和数字格式,如果你需要包括公式、格式等全部内容,可以改成xlPasteAll。
使用注意事项
- 打开你的目标工作簿(包含Overview、01-10工作表的那个)。
- 按
Alt + F11打开VBA编辑器,插入一个新模块(右键工作簿→插入→模块)。 - 把上面的代码粘贴进去,修改文件夹路径。
- 按
F5运行代码,或者回到Excel界面,在开发工具选项卡里点击执行宏。
内容的提问来源于stack exchange,提问作者MassMage
相关产品推荐
相关产品推荐

