下午好,

我正在运行一个宏,该宏将数据复制到另一个工作簿并自动保存该工作簿。问题在于每行包含一张图片,这使它成为一个很大的文件,最大30mb。因此,代码需要一段时间才能完成,并且当我尝试再次运行它时,Excel会完全冻结,因此我必须强制关闭它。当我复制较少的行时,它保持稳定。我想知道这是否是剪贴板问题,但事实并非如此。我怎么只能运行一次?是缓存问题还是什么?我已经在使用压缩图片和application.screenupdating&enablevents = false。

提前致谢

下面的代码导致冻结,基本上第6行之后的每个图片都需要调整大小。

    For Each pic In Ws3.Pictures
pic.Select
 If Selection.TopLeftCell.Row > 6 Then
 With Selection
.Height = .TopLeftCell.RowHeight * 0.9
.Width = .Height * PicWtoHRatio
.Top = .TopLeftCell.Top + (.TopLeftCell.RowHeight - .Height) / 2
.Left = .TopLeftCell.Left + (.TopLeftCell.Width - .Width) / 2
End With
End If
Next pic
End Sub

每当我尝试复制粘贴> 100行时,Excel的其他部分似乎也冻结了该问题。我正在使用cutcopy = False。

最佳答案

如果使用循环,则可以在每次迭代的开始处添加DoEvents。它使Excel有时间处理用户事件,而不是冻结。

While condition
    DoEvents
    ...
Wend

10-04 14:55