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

如何用VBA从另一个工作簿获取日期?代码出现数据覆盖问题求排查

问题原因及修复方案
  • 核心问题:未明确指定目标单元格的归属
    你的代码里Cells(i, 1)没有限定所属的工作簿和工作表。当执行Workbooks.Open打开目标文件后,目标工作簿会自动成为当前活动工作簿,此时Cells(i,1)实际指向的是目标工作簿的单元格,而非代码所在的原工作簿,这就导致了“覆盖目标工作簿单元格”的错误。

  • 修复代码
    用ThisWorkbook指代代码所在的工作簿,明确指定要写入的工作表,修改循环部分的代码:

    For i = 1 To 9
        ThisWorkbook.Worksheets("你的工作表名称").Cells(i, 1) = _
            objWorkbook.Worksheets("Sheet1").Cells(i + 1, 1)
    Next i
    

    记得把"你的工作表名称"替换成你实际要写入的工作表名称(比如"Sheet1")。

  • 额外优化建议
    操作工作簿时尽量避免依赖“活动工作簿/工作表”,始终明确指定对象能避免这类上下文切换错误。另外,打开目标工作簿时可以加上ReadOnly:=True参数,防止意外修改原文件:

    Set objWorkbook = Workbooks.Open("C:\Users\Medvedevda\Documents\excel\date_copy_main.xlsx", ReadOnly:=True)
    

内容的提问来源于stack exchange,提问作者Dima Medvedev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:54:55