VBA - Экспорт изображения из Excel * без * с использованием буфера обмена (копирование / вставка) - PullRequest
0 голосов
/ 17 сентября 2018

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

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

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

1 Ответ

0 голосов
/ 15 января 2019

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

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"
...