EXCEL VBA-多页减缓VBA程序-优化内存



我有一个excel文件,里面有7张表。其中5个有很多预先填充的公式,其中一个有很多文本数据(75000行(。

第7张也是最后一张是从第6张中提取的一些数据(约占6-7%(。对于第7张工作表,我创建了一个VBA宏,它将对文本进行一些处理。如果我删除前6张图纸,只保留最后一张,并运行宏,执行时间会很快。

问题是,我更喜欢保留前6张纸,并运行宏。但在这种情况下,执行时间极其缓慢。

是否有任何代码或可能性以某种方式从内存中卸载前6张表,以便快速执行宏?

我尝试了以下选项来优化内存和执行时间,但都没有成功。

Public CalcState As Long
Public EventState As Boolean
Public PageBreakState As Boolean
Sub OptimizeCode_Begin()
Application.ScreenUpdating = False
EventState = Application.EnableEvents
Application.EnableEvents = False
CalcState = Application.Calculation
Application.Calculation = xlCalculationManual
PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False
End Sub

我在第7张上使用的代码:

Sub Itemsperlinestep1()
'Optimize Code
Call OptimizeCode_Begin
Dim cell, ra3 As Range
Set ra3 = Sheets("Sheet1").Range("B1:XFD1")
Do While True
CountAA = Range("A2").Value
For Each cell In ra3:
If InStr(cell.Value, "<itemdata") Or InStr(cell.Value, "<figure") Then
ElseIf cell.Value <> "" Then
cell.Offset(0, -1) = cell.Offset(0, -1).Value & " " & cell.Value
Sheets("Sheet1").Columns(cell.Column).EntireColumn.Delete               
End If
Next cell
Check = Range("A2").Value
If CountAA = Check Then
Exit Do
End If
Loop

'Optimize Code
Call OptimizeCode_End
Set ra3 = Nothing
End Sub

感谢大家的建议,但大多数解决方案只会将执行时间缩短几纳秒。。。

我所说的是,当文件中只剩下前6张纸时,几秒钟(只有1张纸时(和几个小时之间的差异。

因此,显而易见的问题是这6张纸的存在和这6张书中的内容,而不是我在第7张纸上运行的代码。

因此,我找到的唯一解决方案是从前5张工作表中删除预先填充的公式和条件格式,并在我完成第7张工作表的处理并粘贴文本后使用另一个宏复制它们。

这不是最好的解决方案,但现在效果很快。我肯定更喜欢一种从记忆中冷冻或卸载一些床单的方式。。。也许这是微软可以在未来版本中添加的内容。

最新更新