VBA - 从 Excel *不* 使用剪贴板导出图像 (Copy/Paste)

VBA - Export Image from Excel *without* using Clipboard (Copy/Paste)

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

这在小范围内效果很好,但是当您尝试 运行 通过 3,000 次或更多次迭代时,由于重复使用剪贴板而导致的 "memory leak" 最终会侵蚀该过程,并且宏在某个地方失败了。即使在功能强大的机器(50+ GB RAM)上 运行ning 64 位 Excel 时也会发生这种情况。

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

我也在找你说的;以下是使用图表的方法:

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"

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

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