Страницы: 1
RSS
Подогнать размер изображения к размеру ячейки
 
Всем добрый день!

Проблема 1:
Сейчас делаю так - копирую изображение в ячейку - и оно вставляется большим. Надо руками все время подгонять под размер ячейки.
Можно как-то сделать чтобы автоматом это было?
Необязательно прям сразу подгонялось, но хотя бы так:
1. Вставил большое изображение в ячейку.
2. Нажал горячую клавиши и оно адаптировалось.

Спасибо.
 
Код
Sub ВставитьКартинку(ByRef PicRange As Range, ByVal PicPath As String, _
                     Optional ByVal AdjustWidth As Boolean, _
                     Optional ByVal AdjustHeight As Boolean, _
                     Optional ByVal AdjustPicture As Boolean = False)
    ' ==========  функция получает в качестве параметров:  ====================
    ' PicRange - прямоугольный диапазон ячеек, поверх которого будет расположено изображение
    ' PicPath - полный путь к файлу картинки (файл в формате JPG, BMP, PNG, и т.д.)
    ' AdjustWidth - если TRUE, то включен режим подбора ширины (подгонка по высоте)
    ' AdjustHeight - если TRUE, то включен режим подбора высоты (подгонка по ширине)
    ' AdjustPicture - если TRUE, то подгоняются размеры картинки под ячейку,
    '                 если FALSE (по умолчанию), то изменяются размеры ячейки    On Error Resume Next: Application.ScreenUpdating = False
    ' вставка изображения на лист
    Dim ph As Picture: Set ph = PicRange.Parent.Pictures.Insert(PicPath)
    ' совмещаем левый верхний угол ячейки и картинки
    ph.Top = PicRange.Top: ph.Left = PicRange.Left
 
    Dim K_picture As Double
    K_picture = ph.Width / ph.Height    ' вычисляем соотношение размеров сторон картинки
    Dim K_PicRange As Double
    K_PicRange = PicRange.Width / PicRange.Height    ' вычисляем соотношение размеров сторон диапазона ячеек    If AdjustPicture Then    ' ПОДГОНЯЕМ РАЗМЕРЫ ИЗОБРАЖЕНИЯ под ячейку (оптимальный вариант)        ' если AdjustWidth=TRUE, то высоту не трогаем - изменяем ширину
        If AdjustWidth Then ph.Width = PicRange.Width: ph.Height = ph.Width / K_picture
 
        ' если AdjustHeight=TRUE, то ширину не трогаем - изменяем высоту
        If AdjustHeight Then ph.Height = PicRange.Height: ph.Width = ph.Height * K_picture
 
        ' AdjustWidth=TRUE и AdjustHeight=TRUE: вписываем картинку в ячейку (без соблюдения пропорций)
        If AdjustWidth And AdjustHeight Then ph.Width = PicRange.Width: ph.Height = PicRange.Height
 
 
    Else    ' ИЗМЕНЯЕМ РАЗМЕРЫ ЯЧЕЙКИ под размеры изображения (нежелательно при вставке НЕСКОЛЬКИХ картинок...)        If AdjustWidth Then    ' если AdjustWidth=TRUE, то высоту не трогаем - изменяем ширину
            PicRange.Cells(1).ColumnWidth = PicRange.Cells(1).ColumnWidth * ph.Width / PicRange.Cells(1).Width
            While Abs(PicRange.Cells(1).Width - ph.Width) > 0.1    ' точный подбор ширины ячейки
                PicRange.Cells(1).ColumnWidth = PicRange.Cells(1).ColumnWidth - 0.2 * (PicRange.Cells(1).Width - ph.Width)
            Wend
        End If
 
        If AdjustHeight Then    ' если AdjustHeight=TRUE, то ширину не трогаем - изменяем высоту
            PicRange.Cells(1).RowHeight = PicRange.Cells(1).RowHeight * ph.Height / PicRange.Cells(1).Height
            While Abs(PicRange.Cells(1).Height - ph.Height) > 0.1    ' точный подбор высоты ячейки
                PicRange.Cells(1).RowHeight = PicRange.Cells(1).RowHeight - 0.2 * (PicRange.Cells(1).Height - ph.Height)
            Wend
        End If
 
    End If
End Sub
Когда-то найдено на просторах.
 
Цитата
МатросНаЗебре написал:
Когда-то найдено на просторах.
благодарю.
Это я так понимаю макрос?
А можете в файле эксель показать как работает?
я вставил его в свой файл - но ничего не произошло.
 
Код
Sub TestPic()
   ВставитьКартинку ActiveCell, "C:\Пример.jpg", False, True, True
End Sub
Укажите путь к картинке, запустите этот макрос. Макрос в активную ячейку вставит картинку.
 
Денис,
теперь у Вас есть 2 макроса!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
Денис , теперь у Вас есть 2 макроса!
ДА, теперь нужно найти подходящий)
Цитата
Денис написал:
МатросНаЗебре  написал:Когда-то найдено на просторах.
Я подготовил файл. Указал несколько ссылок для примера скачивания.
Сохранил там макрос, но не знаю как правильно сделать.
По идее нужна проста кнопка где то, которая скачивает ссылки со столбца I и скачать в первую колонку.

Реально?

Файл не загружается - пришлось выложить на диск - https://yadi.sk/d/HBgGz-UAvYc_Aw
Изменено: Денис - 12.11.2019 11:29:43
Страницы: 1
Наверх