VBA-使用剪贴板(无需复制)从Excel导出图像(复制/粘贴)

时间:2018-09-17 05:50:33

标签: excel vba memory-leaks clipboard

关于如何获取Excel范围,从中创建图像并将其保存到驱动器的例子很多。这是一个:Export pictures from excel file into jpg using VBA

这在小规模上效果很好,但是当您尝试进行3,000次或更多次迭代时,由于重复使用剪贴板而导致的“内存泄漏”最终会侵蚀该过程,并且宏在此过程中会失败。即使在功能强大的计算机(50+ GB RAM)上运行64位Excel,也会发生这种情况。

有没有不用剪贴板就可以做到这一点的方法?我的第一个想法是尝试解决内存泄漏问题,但是所有这些尝试均未成功。对于上下文,我基本上使用的是上面链接中的解决方案中提供的确切代码(具有一些附加功能,以尝试减少内存泄漏,例如每100张图像后自动保存工作簿等)。

2 个答案:

答案 0 :(得分:0)

我也在寻找你提到的内容;这是使用图表的方法:

Dim file As String ' the path to the saved image, in the temp dir
file = Environ$("temp") & "\chart.gif"

Sheets("Sheet1").ChartObjects(0).Activate
Sheets("Sheet1").ChartObjects(0).Chart.Export Filename:=file, FilterName:="GIF"

答案 1 :(得分:0)

最终没有解决内存泄漏的方法,这似乎是VBA的系统性问题。

对于那些试图以编程方式生成图表的人来说,用PHP构建起来要容易得多。

相关问题