我需要将 Excel 工作簿的一部分复制到大约 3500 个其他工作簿。由于工作簿数量众多,在每个工作簿上运行宏是不可行的。
有没有办法复制该部分并将其粘贴到其他工作簿而不打开它们?
番茄,
不幸的是,正如 @Ken White 和 @L42 都指出的那样,为了编辑文件,您必须至少在某种程度上打开它(即将其加载到内存中)。更糟糕的是,除非您愿意直接操作 xml 或二进制数据(不建议),否则您将必须使用 Excel 打开 .xlsx 文件,这需要时间。
当然,这并不意味着您必须手动执行。例如:
Sub DataToOtherWorkbooks()
Dim StrFile As String
Dim SourceRange As Range
Rng = "A1:A2"
Set SourceRange = Range(Rng)
StrFile = Dir("C:\ExcelWorkBooks\*.xlsx")
Do While Len(StrFile) > 0
Debug.Print StrFile
Application.ScreenUpdating = False
Set TargetWb = Workbooks.Open("C:\ExcelWorkBooks\" & StrFile)
TargetWb.Worksheets("Sheet1").Range(Rng).Value(11) = SourceRange.Value(11)
TargetWb.Save
TargetWb.Close SaveChanges:=False
StrFile = Dir
Loop
End Sub
上面的代码将循环遍历 ExcelWorkBooks 文件夹中扩展名为 .xlsx 的所有文件,并使用位于源工作簿指定范围内的数据填充它们。
然而,正如前面提到的,这需要一些时间。当我在 100 个工作簿(从我的笔记本电脑)上运行它时,每个工作簿平均花费 0.54 秒。因此,就您而言,如果有 3,500 个工作簿,您大约需要 31 分钟来查看。虽然不完全是光速,但肯定比手工操作要好。希望这对您有用。如果您还有其他问题,请询问。
补充
番茄,为了回应您的评论,要传输格式,包括您将使用的范围内单元格的合并或未合并性质:
TargetWb.Worksheets("Sheet1").Range(Rng).Value(11) = SourceRange.Value(11)
我已经更新了原始代码以反映更改。这应该可以帮您解决,但请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)