VBA通过Workbooks.Open实现多文件单元格批量复制求助
VBA批量提取多文件指定单元格值宏实现
你现有代码仅完成了多文件选择打开的基础逻辑,缺少主文件目标表绑定、逐文件取值写入、源文件自动关闭的核心环节,修改后可直接运行的完整代码如下:
Option Explicit Sub copy_multiple_file() Dim i As Integer Dim targetSht As Worksheet Dim sourceWb As Workbook Dim nextRow As Long ' 临时关闭屏幕更新、弹窗提示,提升运行流畅度 Application.ScreenUpdating = False Application.DisplayAlerts = False ' 绑定主文件的粘贴目标工作表 Set targetSht = ThisWorkbook.Sheets("Graph provision") ' 定位A列首个空行,避免覆盖已有数据 nextRow = targetSht.Cells(targetSht.Rows.Count, "A").End(xlUp).Row + 1 ' 调起文件选择窗口 With Application.FileDialog(msoFileDialogFilePicker) .AllowMultiSelect = True .Filters.Clear .Filters.Add "Excel Files", "*.xls*" ' 用户点取消直接退出,不执行后续操作 If .Show <> True Then GoTo ResetConfig ' 遍历所有选中的目标文件 For i = 1 To .SelectedItems.Count ' 以只读模式打开单个源文件 Set sourceWb = Workbooks.Open(.SelectedItems(i), ReadOnly:=True) ' 读取源文件AJ9单元格值,写入主表A列对应位置 targetSht.Cells(nextRow, "A").Value = sourceWb.Sheets(1).Range("AJ9").Value ' 写入行号下移一位 nextRow = nextRow + 1 ' 关闭当前源文件,不保存任何改动 sourceWb.Close SaveChanges:=False Next i End With ResetConfig: ' 恢复Excel默认配置 Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
使用说明
- 宏代码必须存放在主文件「KA_AcceleratingReading_V1」中,运行时不要随意切换活动工作簿,避免目标表识别错误
- 代码默认读取每个源文件第一个工作表的AJ9单元格内容,如果AJ9在固定名称的工作表中,将
sourceWb.Sheets(1)替换为sourceWb.Sheets("你的源文件工作表名称")即可 - 写入数据时会自动识别「Graph provision」工作表A列的最后一条已有数据,从下一行开始追加,不会覆盖原有内容
- 所有源文件均以只读模式打开,取值完成后自动关闭,全程不会修改源文件内容,也不会弹出保存提示
内容的提问来源于stack exchange,提问作者Antoine Weigel
相关产品推荐
相关产品推荐

