我们使用SAS输出到rtf文件然后一起编译加载,在大多数情况下创建非常大的文档。但是,当将这些输出编译成一个单独的文档时,有时会创建空白页面,我们需要搜索和删除这些页面。
我到目前为止的代码似乎在大多数情况下都有效,但我在某些情况下遇到了内存错误,并且想知道是否有人有改进代码的建议?
以下是代码的开头,我在某些情况下会遇到内存错误:
# list of files to read
frameList <-c("apples", "bananas", "pears")
结束
答案 0 :(得分:0)
这有点乱,而且更多的是黑客,因为我没有你的数据(因此我不确定Len(rng) < 3
是什么,但你可以添加另一个循环来声明你的数组大小一次,而不是为每个循环做这件事。
这可能会导致性能下降或性能提升(因为您不会经常使用ReDim Preserve
,我会认为会有所收获。)
Sub BlankPage()
Application.ScreenUpdating = False
Application.Options.Pagination = False
Dim i As Long, Rng As Range, Blank As Integer, Page() As Long
With ActiveDocument
Blank = 0
'Get the array size ONE time only
For i = 1 To .ComputeStatistics(wdStatisticPages)
If Len(Rng) < 3 Then Blank = Blank + 1
Next
ReDim Page(Blank) '< -- You ReDim only once -- <
Blank = 0
For i = 1 To .ComputeStatistics(wdStatisticPages)
Set Rng = .GoTo(What:=wdGoToPage, Name:=i)
Set Rng = Rng.GoTo(What:=wdGoToBookmark, Name:="\page")
If Len(Rng) < 3 Then
blank = blank + 1
If Blank = 1 Then '< -- remove the ReDim preserve -- <
Page(Blank) = Rng.Information(wdActiveEndAdjustedPageNumber)
Else
Page(Blank) = ((Rng.Information(wdActiveEndAdjustedPageNumber) - Blank) + 1)
End If
End If
Next i
Application.Options.Pagination = True
Application.ScreenUpdating = True