powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с программной вставкой картинки в Excel
4 сообщений из 4, страница 1 из 1
Проблема с программной вставкой картинки в Excel
    #37370684
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вставляю программно картинку на лист Excel
...
Рейтинг: 0 / 0
Проблема с программной вставкой картинки в Excel
    #37370689
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... с помощью кода
Код: plaintext
1.
2.
3.
4.
5.
6.
            xlSh.Cells(CurrentRow +  1 , DataFirstColumn).select()
            xlR = xlApp.Selection

            xlSh.Shapes.AddPicture(ReadLine("c:\p" & i & ".cgm", - 1 , - 1 , _
            xlR.Left, _
            xlR.Top,  250 ,  250 )

Но визуально картинка расположена ниже ячейки xlR, хотя свойства Top у них совпадают
...
Рейтинг: 0 / 0
Проблема с программной вставкой картинки в Excel
    #37370692
Тыжных Иван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... при чем если подобный цикл сделать из VBA картинки находятся на своих местах
...
Рейтинг: 0 / 0
Проблема с программной вставкой картинки в Excel
    #37374502
EducatedFool
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо, вы используете в качестве объекта xlApp экземпляр приложения Excel 2007 или 2010 .

Версии Excel до 2003-го включительно вставляют картинку точно в указанное место.
Новые же версии как-то учитывают рамки вокруг ячеек, и картинка вставляется со смещением.

Делал так - в некоторых случаях помогает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Function ВставитьКартинку(ByRef cell As Range, ByVal pic As String) As Picture
    ' если картинка вставлена успешно, возвращает TRUE
    On Error Resume Next: Err.Clear
    Dim ph As Picture: Set ph = cell.Parent.Pictures.Insert(pic)
    Set ВставитьКартинку = ph
    ph.Placement = xlMoveAndSize
    ph.ShapeRange.LockAspectRatio = msoFalse
    ph.Top = cell.Top - CLng(Val(Application.Version) >=  12 ) *  0 . 1  * cell.Row
    ph.Left = cell.Left
    '    k = ph.Width / ph.Height
    '    ph.Width = cell.Width: ph.Height = ph.Width / k
    ph.Width = cell.Width: ph.Height = cell.Height

    'cell.EntireRow.RowHeight = ph.Height
    'If (Val(Application.Version) = 12) Then cell.Borders.LineStyle = xlNone
End Function

Обратите внимание на строку
Код: plaintext
ph.Top = cell.Top - CLng(Val(Application.Version) >=  12 ) *  0 . 1  * cell.Row

(если Excel старше версии 2003 - из координаты TOP вычитается небольшое число. подобрал его методом тыка, не всегда точно вставляется, но намного точнее, чем без этого)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с программной вставкой картинки в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]