使用VBA的大文件大小复制范围

我有一个例程,通过生成单元格引用旧的工作表复制工作表。 我的问题是,当我在一个大小为280KB的工作簿中的三张纸上运行这个例程时,它会扩展到80MB。 如果我复制并粘贴工作表值以删除公式,工作簿将保持相同的大小。 如果我删除表单并保存,则会返回到原始大小。 在VBA处理引起此问题的内存的方式中是否有我缺less的东西? 我已经尝试在例程结束时将所有variables设置为无。

Public Sub CopySheetFormulas(inputSheet As Worksheet, outputSheet As Worksheet) Dim rowCounter As Long Dim columnCounter As Long Dim maxRow As Long Dim maxColumn As Long maxColumn = inputSheet.Cells.Find(What:="*", After:=inputSheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False).Column Debug.Print "Max Column: " & maxColumn maxRow = inputSheet.Cells.Find(What:="*", After:=inputSheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlPart, _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row Debug.Print "Max Row: " & maxRow inputSheet.Range("A1").Resize(maxRow, maxColumn).Copy With outputSheet .Activate .Range("A1").Select .Paste Link:=True End With End Sub 

XLSX文件将单元格内容存储为一个string。 但是他们自己没有清理干净。 所以如果你删除了一些东西,并不总是减小文件的大小。

如果您只是复制工作表,则不会像生成指向所有单元格的链接一样大。 那是因为每个链接被存储为一个单独的string。

http://www.ozgrid.com/Excel/ExcelProblems.htm

原始表单有可能会修改到最后一行。 然后,当你把它作为链接复制时,它会变得疯狂,因为它会产生数百万条链接。 检查maxColumns和maxRows的值。

如果要减小文件大小,则需要从工作表中删除附加行或列,然后保存。 文件大小会减less。

例如下面的快照,以前我有22个logging,虽然我已经删除了一些logging,但仍然有助于文件大小的空单元格。 如何知道它,CTRL + END,它停止的单元格会告诉你。

删除那些空行或列将减less文件大小。

在这里输入图像描述