我有一个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
是一个String,其范围用于数据透视表。我的问题是,当我删除数据透视表时,我没有删除这些连接。因此,每次执行宏时都会添加一个新连接。
我添加了这段代码,以便在删除数据透视表后删除不再需要的任何连接:
Dim connection As Object
For Each connection In ActiveWorkbook.Connections
If connection.name <> "ThisWorkbookDataModel" Then connection.Delete
Next connection
该文件仍然很大但可管理,最重要的是它不再增长。
感谢Pᴇʜ建议我删除数据透视缓存并指出,这些与连接一起被删除。