:: Visual Foxpro, Foxpro for DOS
Picture.Insert() в разных версиях Excel
Konstantin_Pavlovich

Сообщений: 143
Откуда: Москва
Дата регистрации: 21.11.2007
Здравствуйте!

Задача - вставить картинки в разные ячейки Excel таблицы (прайс с отдельной колонкой с фотографиями товара). Сделал вставку фотографий в ячейки с помощью метода Picture.Insert("путь и имя файла с картинкой"), который применяется к текущему листу, перед этим командой Ex.APPLICATION.cells(m.rr,m.col_ph).Select выбираю нужную ячейку (rr и col_ph переменные). Всё работает. У меня Excel2003, файлы с фотографиями находятся внутри Excel таблицы и таблицу можно переслать по e-mail, откроется с фотографиями на любом компьютере.

Но у моих клиентов другие версии Excel, 2010 и 2016. Там Excel файл формируется не с фотографиями, а с ссылками на них. На своих компьютерах они открывают такой файл без проблем, а когда посылают его своим клиентам, те не видят фотографий.

Вопрос, как сделать (какой доп параметр или свойство указать) методу Picture.Insert, чтобы он всегда, во всех версиях Excel (или хотя бы в версиях 2007 и 2010), вставлял в ячейку сам файл, а не ссылку на него. Я знаю, что такая возможность есть, но никак не могу найти, какой параметр (или какое свойство) за это отвечает.

Пробовал сделать вставку фотографий с помощью нового метода AddPicture(), но он показался мне очень сложным и неудобным. И то работает, то всякие ошибки выдаёт.


------------------
С уважением
Стороженко Константин Павлович
Ratings: 0 negative/0 positive
Re: Picture.Insert() в разных версиях Excel
ry
Автор

Сообщений: 2113
Дата регистрации: 24.09.2007
Через Picture.Insert в новых версиях Excel вставляется только ссылка на файл, и это никак не обойти, кроме как сменить метод на Shapes.AddPicture. Сложного в нем ничего нет, разве что точно расположить объект. Картинка вставляется не в ячейку, а поверх листа, поэтому привязка идет по координатам от начала листа.

Использование: ActiveSheet.Shapes.AddPicture(FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
Параметры:
FileName — строка, задающая имя файла, на основе которого создается рисунок;
LinkToFile — допустимые значения: msoTrue (рисунок связан с файлом, на основе которого создан) и msoFalse (в противном случае);
SaveWithDocument — допустимые значения: msoTrue(сохраняется рисунок с рабочей книгой) и msoFalse (в рабочей книге сохраняется связь с рисунком, а не сам рисунок);
Left, Top — координаты левого верхнего угла объекта;
Width, Height — ширина и высота объекта.

Чтобы расположить картинку над конкретной ячейкой, можно указывать что-то вроде
Left=ActiveSheet.Range("B3").Left
Top=ActiveSheet.Range("B3").Top

Пример:
oExcel.ActiveSheet.Shapes.AddPicture("e:\test.jpg", 0, -1, oExcel.ActiveSheet.Range("D10").Left+2, oExcel.ActiveSheet.Range("D10").Top+2, 180, 120)

Примечание:
msoFalse=0, msoTrue=-1
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика