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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:33:22