我有一个vba宏,可根据输入表中的某些数据创建数据透视表。每次运行宏时,都会删除旧的枢轴,并创建一个新的枢轴。
我面临的问题是,运行宏后每次保存文件时,文件大小都会增加大约14MB。
这是我删除旧数据透视表的方法:
For Each pivot In reportSht.PivotTables
pivot.TableRange2.Clear
Next pivot
我的理论是枢轴的某些部分没有被删除,但是我似乎无法将注意力放在什么上。
答案 0 :(得分:2)
我找到了解决我问题的方法。创建数据透视表时,我还添加了连接,因为我需要显示数据透视表中的唯一条目数:
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ᴇʜ建议我删除数据透视缓存并指出,这些缓存与连接一并删除。