Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 11:57

Вывод картинки из 1С в Excel 2007

Автор uvl, 17 авг 2011, 23:17

0 Пользователей и 1 гость просматривают эту тему.

uvl

Здравствуйте.
Ниже привожу код:
// Вставляем картинку в место, где спозиционирован курсор и выделяем ее
ЛистНовый.Pictures.Insert(Путь).Select();
// Узнаем высоту картинки, если больше 80, то уменьшаем до 80
Если Число(ExcelApp.Application.Selection.ShapeRange.Height())>80 Тогда
   ExcelApp.Application.Selection.ShapeRange.Height=80;
КонецЕсли;
// Узнаем высоту картинки
PictureHeight=ExcelApp.Application.Selection.ShapeRange.Height();
// Устанавливаем туже высоту, для строки под картинкой
ЛистНовый.Rows(СтрокаНач).RowHeight = PictureHeight;
// добавляем гиперссылку к картинке
ЛистНовый.Hyperlinks.Add(ExcelApp.Application.Selection.ShapeRange.Item(1),ВыборкаСсылка.url);


В excel 2003 все нормально отрабатывается,
каждая картинка вставляется в нужные строчки в цикле естественно, где СтрокаНач постоянно увеличивается,
т.е. = 1, 2, 3... 5... ну так далее...
А вот в 2007м все картинки добавляются в первую ячейку  :(
То есть позиционирования на строке не происходит...
Как бы это решить?
Еще нюанс, Ексель 2007 почему то не записывает макросы при вставке картинки, так бы я хоть посмотрел методы в VBA...

has

Гугл говорит что картинку в 2007 вставлять надо через

Shapes.AddPicrure

сам не проверял

has

Чет не понятно немного, в каком месте ошибка то?

has

Во, взял твой код на основу. Макрос работает в экселе 2007, на 1С думаю переделаешь. Только высоту строки не меняет чет

For i = 20 To 100
  'ActiveSheet.Pictures.Insert("E:\123.jpg").Select
  ActiveSheet.Shapes.AddPicture "E:\123.jpg", False, True, 100, i, 80, 80
  ActiveSheet.Pictures.Paste.Select
  ' Узнаем высоту картинки, если больше 80, то уменьшаем до 80
  If Selection.ShapeRange.Height > 80 Then
     Selection.ShapeRange.Height = 80
  End If
  ' Узнаем высоту картинки
  PictureHeight = Selection.ShapeRange.Height
  ' Устанавливаем туже высоту, для строки под картинкой
  ActiveSheet.Rows(i).RowHeight = PictureHeight
  i = i + 10
Next

uvl

да, уже разобрался что надо так:

Ячейки = ЛистНовый.Cells;
Ячейка = Ячейки.Item(СтрокаНач,2);
Shapes.AddPicture(Путь, 0, -1, Ячейка.Left, Ячейка.Top, ШиринаКартинки, ВысотаСтроки);


Только как бы еще получить ШиринаКартинки ???
поскольку ВысотаСтроки может быть разной, и размер картинки тоже, т.е. пропорционально чтоб она вставлялась...

uvl

Для полноты темы:

// получаем высоту и ширину картинки

// Для работы нам потребуется внешняя dll

// http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29#filelist

// файл (WIAAutSDK.zip)

Img = Новый COMОбъект("WIA.ImageFile"); 
Img.LoadFile(Путь);
ВысотаКартинки = Img.Height;
ШиринаКартинки = Img.Width;

has

А средствами экселя или 1С никак?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск