10.08.2006, 12:19 | #1 |
Участник
|
Всем привет. Опять траблы при экспорте отчёта в Эхель. На этот раз с картинками.
Подсмотрел в макросе как это дело работает. Там написано ActiveSheet.Pictures.Insert('C:\temp.bmp') , вот только в нави не катит такое. Он ругается, мол не объявлена переменная Insert. Вариант Sheet.Range('A1').Insert('C:\temp.bmp') хляет, но уже при экспорте выкидывает ошибку мол вызов функции Insert неудачен. Кстати, если надо пихнуть картинку в Header или в Footer, топроблем не возникает. Код типа ActiveSheet.PageSetup.RightHeaderPicture.Filename = 'C:\temp.bmp' работает исправно. Может надо каким-то другим образом дать ему понять куда надо вставлять картинку? |
|
10.08.2006, 13:20 | #2 |
Участник
|
У нас картинки вставляются следующим образом:
Код: XlWorkSheet.Shapes.AddShape(1,1,1,160,60).Fill.UserPicture(Path); |
|
10.08.2006, 14:20 | #3 |
Участник
|
Спасибо, Kekki, у нас теперь тоже картинки будут вставляться таким же образом. Если использовать тот код, который вы привели в качестве примера, то вставка будет по дефолту с обрамлением. Чтобы его не было (что впрочем мне и нужно было) устанавливается свойство Line.Transparency:=1;
Итак, Код: Shape:=Sheet.Shapes.AddShape(1,1,1,160,60); Shape.Fill.UserPicture('C:\tmp.bmp'); Shape.Line.Transparency:=1; |
|
10.08.2006, 14:56 | #4 |
Участник
|
Вам тоже спасибо
Если мне вдруг понадобится убрать обрамление, буду знать как |
|
14.08.2006, 09:23 | #5 |
Участник
|
Вот выдрал кусок, тут небльшие заморочки.
fPar - диапазон ячеек в которые нужно вписать картинку fPar2 - путь к файлу Картинка автомасштабируется с сохранением пропроций Код: 'P': IF NextParam(fStr,fPar) THEN BEGIN IF NextParam(fStr,fPar2) THEN BEGIN XlsShapes:=XlsWsh.Shapes; XlsRng:=XlsWsh.Range(fPar); EVALUATE( PicLeft,FORMAT(XlsRng.Left)); EVALUATE( PicTop,FORMAT(XlsRng.Top)); EVALUATE( PicWidth,FORMAT(XlsRng.Width)); EVALUATE( PicHeight,FORMAT(XlsRng.Height)); XlsShape:=XlsShapes.AddPicture(fPar2,1,1,PicLeft,PicTop,PicWidth,PicHeight); i:=0; XlsShape.LockAspectRatio:=i; i:=2; j:=-1; XlsShape.ScaleHeight(i,j); XlsShape.ScaleWidth(i,j); XlsShape.LockAspectRatio:=-1; IF XlsShape.Width>PicWidth THEN XlsShape.Width:=PicWidth; IF XlsShape.Height>PicHeight THEN XlsShape.Height:=PicHeight; XlsShape.IncrementLeft((PicWidth-XlsShape.Width)/2); XlsShape.IncrementTop((PicHeight-XlsShape.Height)/2); //MESSAGE(FORMAT((PicHeight-XlsShape.Height)/2)); END; END; |
|
13.10.2006, 12:47 | #6 |
Участник
|
А как бы нам бы вставить картинку с её оригинальными размерами? Бы... Без всяких вписываний и масштабирований.
Или хотя бы узнать ширину/высоту высоту картинки до вставки? |
|
13.10.2006, 12:56 | #7 |
Участник
|
Записывай макрос, и смотри.
|
|
13.10.2006, 13:10 | #8 |
Участник
|
Думаю, создание этой темы как раз и было положено после записи макроса, когда было обнаружено, что записанная команда ActiveSheet.Pictures.Insert('C:\temp.bmp') в Наве не работает
Записывал я уже всё... Мимо. |
|