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(), но он показался мне очень сложным и неудобным. И то работает, то всякие ошибки выдаёт. ------------------ С уважением Стороженко Константин Павлович |
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 |
© 2000-2024 Fox Club  |