我有一个vba宏,该宏可以根据输入表中的某些数据创建一个枢轴表。每次宏运行时,都会删除旧枢轴并创建一个新的枢轴。
我面临的问题是,运行宏后每次保存文件时,文件大小都会增加14MB。
这就是我删除旧枢轴表的方式:
For Each pivot In reportSht.PivotTables
pivot.TableRange2.Clear
Next pivot
我的理论是,枢轴的某些部分尚未被删除,但我似乎无法将手指放在什么上。
我找到了解决问题的解决方案。当我创建枢轴表时,我还会添加连接,因为我需要在枢轴表中显示唯一条目的数量:
ActiveWorkbook.Connections.Add2 "WorksheetConnection_" & inputDataArea, "", _
"WORKSHEET;" & ActiveWorkbook.Path & "[" & ActiveWorkbook.name & "]" _
& inputSht.name, inputDataArea, 7, True, False
其中 inputDataArea
是一个字符串,其范围用于枢轴表。我的问题是,当我删除枢轴表时,我并没有删除这些连接。因此,每次执行宏时都会添加一个新的连接。
我添加了此代码,还可以删除删除枢轴表后不再需要的任何连接:
Dim connection As Object
For Each connection In ActiveWorkbook.Connections
If connection.name <> "ThisWorkbookDataModel" Then connection.Delete
Next connection
该文件仍然很大,但易于管理,最重要的是它不再成长了。
感谢Pᴇʜ建议我删除枢轴缓存并指出,它们与连接一起删除。