Существует множество отличных примеров того, как взять диапазон Excel, создать из него изображение и сохранить его на диск. Вот один из них: Экспорт изображений из файла excel в jpg с помощью VBA

Это отлично работает в малых масштабах, но когда вы пытаетесь выполнить это через 3000 или более итераций, «утечка памяти», вызванная многократным использованием буфера обмена, в конечном итоге разрушает процесс, и макрос дает сбой где-то на этом пути. Это происходит даже при запуске 64-разрядной версии Excel на мощном компьютере (более 50 ГБ ОЗУ).

Есть ли способы сделать это без использования буфера обмена ?? Моей первой мыслью было попытаться исправить проблему утечки памяти, но все эти попытки оказались безуспешными. Для контекста я в основном использую точный код, указанный в решении по ссылке выше (с парой дополнительных функций, чтобы попытаться уменьшить утечку памяти, например, автоматическое сохранение книги после каждых 100 изображений и т. Д.).

0
famouspotatoes 17 Сен 2018 в 08:50

2 ответа

Лучший ответ

В конечном итоге не было решения для утечки памяти, похоже, это системная проблема с VBA.

Тем, кто пытается программно генерировать диаграммы, гораздо проще создать PHP.

0
willsmanley 30 Окт 2019 в 16:54

Я также ищу то, что вы упомянули; вот как это сделать с диаграммой:

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"
0
Tom 15 Янв 2019 в 20:59