如何用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
相关产品推荐
相关产品推荐

