Простого пути не нашел, пришлось идти окольными путями.
Конечно же, сначала в интернет... обнаружил, что люди сталкиваются с теми же проблемами, что и я.
Немного об объектной модели Excel.
1. Приложение: Application. Приложение мы создаем так:
Application = Новый COMОбъект("Excel.Application");
2. Приложение имеет колекцию книг: Application.Workbooks.
Файл эксель открывается как книга Workbook, т.е. элемент коллекции Workbooks, например,
Workbook = Application.Workbooks.Item(0);
или когда хотим открыть файл-excel
Workbook = Application.Workbooks.Open(ПутьКФайлу);
3. Коллекция листов и диаграмм Workbook.Sheets,
можно и по отдельности обойти коллекцию листов Workbook.Worksheets и коллекцию диаграмм Workbooks.Charts, а можно одним махом через коллекцию Sheets.
Каждый элемент этой коллекции (лист или диаграмма) имеют свойство Shapes с коллекцией объектов Shape, дословно "фигура".
4. Коллекция фигур Sheet.Shapes содержит коллекцию различных графических объектов листа или диаграммы.
В числе этих графических объектов можно найти и картинку.
5. Картинка. Каждый элемент Shape коллекции Shapes имеет свойство Shape.Type, которое принимает значения перечисления MsoShapeType. Одно из значений этого перечислений MsoShapeType.msoPicture = 13. То, что нужно.
Таким образом мы можем найти все объекты картинок в любом файле MS Excel, и это не сложно.
6. Картинку в файл. А вот, что делать каждым объектом Shape, чтобы его выгрузить в файл - это уже вопрос.
Методов у фигуры Shape много. Единственный, хоть как-то касающийся вопроса, это метод CopyPicture, при вызове этого метода картинка копируется в буфер обмена. От чего легче не становится.
Встает другой вопрос, как достать из буфера картинку, или переложить в другой объект Excel, где есть нужные методы.
Можно было бы экспортировать лист с нужной картинкой в HTML документ, а затем в папке документа html *.files поискать картинки. Сумбурный метод.
Оказывается, удобней из буфера переложить картинку в объект диаграммы Chart, при этом подогнав размеры диаграммы под картинку, а диаграмму можно аккурат сохранить как картинку в нужный файлик. Это уже порядок.
Всем этим занимается следующая функция. Даём ей объект Shape, ИмяФайла и ТипФайла:
// Сохранение картинки из объекта Shape в файл.
// FilterName - строка, JPG, GIF, PNG, BMP и т.д.
Функция СохранитьКартинкуВФайл(Shape, FileName, FilterName = Неопределено) Экспорт
// Инициализируем константы VBA.
msoFalse = 0;
msoPicture = 13;
xlLineStyleNone = -4142;
xlWBATWorksheet = -4167;
// Проверяем тип объекта.
Если Shape.Type <> msoPicture Тогда
Возврат Ложь;
КонецЕсли;
// Создаем новую книгу с единственным листом.
Книга = Shape.Application.Workbooks.Add(xlWBATWorksheet);
// Создаем диаграмму, в которую копируем картинку.
Диаграмма = Книга.Worksheets.Item(1).Shapes.AddChart().Chart;
// Устанавливаем размер диаграммы как у картинки.
Диаграмма.ChartArea.Height = Shape.Height;
Диаграмма.ChartArea.Width = Shape.Width;
// Убираем границу диаграммы.
Диаграмма.ChartArea.Border.LineStyle = xlLineStyleNone;
// Убираем заполнение диаграммы.
Диаграмма.ChartArea.Fill.Visible = msoFalse;
// Копируем картинку в буфер.
Shape.CopyPicture();
// Вставляем данные в диаграмму из буфера.
Диаграмма.Paste();
// Экспортируем диаграмму в картинку (*.jpg, *.gif, *.bmp, *.png).
Успех = Диаграмма.Export(FileName, FilterName);
// Закрываем книгу без сохранения изменений.
Книга.Close(False);
Возврат Успех;
КонецФункции
Во вложении конфигурация с примером использования функции.