Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка рисунков в таблицу по центру (по наибольшей стороне) - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вставка рисунков в таблицу по центру (по наибольшей стороне)
Megamen2 Дата: Понедельник, 08.10.2018, 11:44 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте.
Подскажите с решением.

Есть таблица, в которой имеются ячейки с разными числами 1,2,3 и т.д.
Рядом находится таблица, в которой представлены соответствия чисел - определенным ссылкам на рисунки.

Как макросом вставить в столбец J этой таблицы - рисунки по приведенным ссылкам в соответствии с числами (при этом очистив столбец J от других рисунков) ?
К сообщению приложен файл: 8436488.xls (56.0 Kb) · 3984681.rar (14.6 Kb)
 
Ответить
СообщениеЗдравствуйте.
Подскажите с решением.

Есть таблица, в которой имеются ячейки с разными числами 1,2,3 и т.д.
Рядом находится таблица, в которой представлены соответствия чисел - определенным ссылкам на рисунки.

Как макросом вставить в столбец J этой таблицы - рисунки по приведенным ссылкам в соответствии с числами (при этом очистив столбец J от других рисунков) ?

Автор - Megamen2
Дата добавления - 08.10.2018 в 11:44
Roman777 Дата: Среда, 10.10.2018, 11:52 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Вот:

[vba]
Код

Sub InsertCapt()
    Dim i&
    Dim o, key$
    Dim w As Single, h As Single, px As Single, py As Single
    Dim kst As Single, sc As Single
    Dim shp, pcentW As Single
    Set o = CreateObject("Scripting.Dictionary")
    'удаляем все картинки, середина (по ширине) которых не вылезает за границы столбца "J"
    For Each shp In ActiveSheet.Shapes
        pcentW = shp.Left + shp.Width / 2
        With Cells(1, 10)
            If pcentW > .Left And pcentW < .Left + .Width Then
                shp.Delete
            End If
        End With
    Next shp
    'создаём словарик с соответствием цифры (из столбца I) - ссылке на рисунок
    For i = 7 To Cells(Rows.Count, 22).End(xlUp).Row
        key = Cells(i, 21)
        If Not o.exists(key) Then
            o.Add key, CStr(Cells(i, 22))
        End If
    Next i
    'Вставляем картинку и подгоняем по размеру
    For i = 7 To Cells(Rows.Count, 9).End(xlUp).Row
        If Cells(i, 9) <> "" Then
            With Cells(i, 10)
                w = .Width
                h = .Height
                px = .Left
                py = .Top
            End With
            kst = w / h
            On Error GoTo A
            With ActiveSheet.Pictures.Insert(o(CStr(Cells(i, 9))))
                If (.Width / .Height) < kst Then
                    sc = h / .Height
                Else
                    sc = w / .Width
                End If
                .ShapeRange.ScaleWidth sc, msoFalse, msoScaleFromTopLeft '
                .Left = px + (w - .Width) / 2
                .Top = py + (h - .Height) / 2
'                .ShapeRange.ScaleHeight sc, msoFalse, msoScaleFromTopLeft
            End With
        End If
    Next i
A:     MsgBox "Вероятно, ссылка на картинку(ки) не действительна." & Chr(13) _
                & "Работа макроса будет прекращена!"

End Sub

[/vba]
К сообщению приложен файл: 8436488_.xls (66.0 Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 10.10.2018, 12:33
 
Ответить
СообщениеВот:

[vba]
Код

Sub InsertCapt()
    Dim i&
    Dim o, key$
    Dim w As Single, h As Single, px As Single, py As Single
    Dim kst As Single, sc As Single
    Dim shp, pcentW As Single
    Set o = CreateObject("Scripting.Dictionary")
    'удаляем все картинки, середина (по ширине) которых не вылезает за границы столбца "J"
    For Each shp In ActiveSheet.Shapes
        pcentW = shp.Left + shp.Width / 2
        With Cells(1, 10)
            If pcentW > .Left And pcentW < .Left + .Width Then
                shp.Delete
            End If
        End With
    Next shp
    'создаём словарик с соответствием цифры (из столбца I) - ссылке на рисунок
    For i = 7 To Cells(Rows.Count, 22).End(xlUp).Row
        key = Cells(i, 21)
        If Not o.exists(key) Then
            o.Add key, CStr(Cells(i, 22))
        End If
    Next i
    'Вставляем картинку и подгоняем по размеру
    For i = 7 To Cells(Rows.Count, 9).End(xlUp).Row
        If Cells(i, 9) <> "" Then
            With Cells(i, 10)
                w = .Width
                h = .Height
                px = .Left
                py = .Top
            End With
            kst = w / h
            On Error GoTo A
            With ActiveSheet.Pictures.Insert(o(CStr(Cells(i, 9))))
                If (.Width / .Height) < kst Then
                    sc = h / .Height
                Else
                    sc = w / .Width
                End If
                .ShapeRange.ScaleWidth sc, msoFalse, msoScaleFromTopLeft '
                .Left = px + (w - .Width) / 2
                .Top = py + (h - .Height) / 2
'                .ShapeRange.ScaleHeight sc, msoFalse, msoScaleFromTopLeft
            End With
        End If
    Next i
A:     MsgBox "Вероятно, ссылка на картинку(ки) не действительна." & Chr(13) _
                & "Работа макроса будет прекращена!"

End Sub

[/vba]

Автор - Roman777
Дата добавления - 10.10.2018 в 11:52
Megamen2 Дата: Среда, 10.10.2018, 12:31 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Roman777, огромное спасибо.
 
Ответить
СообщениеRoman777, огромное спасибо.

Автор - Megamen2
Дата добавления - 10.10.2018 в 12:31
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!