Макрос для увеличения картинки в excel

Макрос позволяет увеличивать / уменьшать изображения на листе Excel по щелчку мыши.

Для использования макроса, скопируйте в свой файл модуль с кодом (просто перетащив его мышкой из прикреплённого файла),
выделите все картинки в своём файле Excel, и назначьте им макрос ZoomImage

Чтобы выделить все изображения, проделайте следующее:

  • нажмите Ctrl + G (для появления диалогового окна «Переход»)
  • нажмите кнопку «Выделить» в этом диалогом окне
  • в появившемся окне «Выделение группы ячеек» поставьте галочку «Объекты», и нажмите OK

После этого (как все картинки будут выделены), щелкните на одной из картинок правой кнопкой мыши,
в контекстном меню нажмите «Назначить макрос», выделите макрос ZoomImage, и нажмите OK

При щелчке на картинке, макрос плавно увеличивает картинку в 3 раза, попутно перемещая её в центр экрана
(коэффициент увеличения, скорость увеличения фото, и количество промежуточных шагов увеличения, можно задать в коде)

Для увеличения создаётся копия исходной картинки.
При щелчке на увеличенной картинке, она плавно уменьшается в размерах, после чего удаляется.

Код макроса ZoomImage:

Sub ZoomImage()
    ' Макрос для увеличения / уменьшения картинок в Excel, по щелчку на них
    ' © 2013 EducatedFool     ExcelVBA.ru/code/ZoomImages

    Const ZOOM_RATIO# = 3    ' коэффициент увеличения изображения
    Const STEPS_COUNT& = 20    ' количество промежуточных шагов при увеличении
    Const ZOOM_SPEED# = 2   ' скорость увеличения / уменьшения картинки ( от 0 до 10)

    On Error Resume Next: Err.Clear: Dim sha As Shape, s_sha As Shape, i&
    Set s_sha = ActiveSheet.Shapes(Application.Caller)
    If Err Then Exit Sub    ' выход, если макрос вызван не щелчком на картинке

    If s_sha.Name Like "BigImage_*" Then    ' щелчок на увеличенной картинке
        With s_sha
            cx1# = .Left + .Width / 2: cy1# = .Top + .Height / 2
            dw# = .Width / STEPS_COUNT&
            dt# = ZOOM_SPEED# / 50 / STEPS_COUNT&
 
            For i& = 1 To STEPS_COUNT&    ' в цикле уменьшаем картинку
                t = Timer: .Width = .Width - dw#
                .Left = cx1# - .Width / 2: .Top = cy1# - .Height / 2
                While Timer - t < dt#: DoEvents: Wend
            Next i
            .Delete    ' а потом удаляем её
        End With
 
    Else    ' щелчок на исходной картинке, - создаём её копию, и увеличиваем
        For Each sha In ActiveSheet.Shapes
            If sha.Name Like "BigImage_*" Then sha.Delete
        Next
 
        Set sha = s_sha.Duplicate    ' создаем копию картинки
        sha.Top = s_sha.Top: sha.Left = s_sha.Left    ' помещаем копию поверх исходной
        sha.Name = "BigImage_" & Timer    ' переименовываем изображение
        sha.LockAspectRatio = 1
 
        ' если есть закреплённые столбцы и строки
        TopRowsHeight# = Range("1:1").RowHeight    ' закреплена первая строка
        LeftColumnsWidth# = 0    ' закреплённых столбцов нет

        With sha
            cx1# = .Left + .Width / 2: cy1# = .Top + .Height / 2
 
            cx2# = Columns(ActiveWindow.ScrollColumn).Left - LeftColumnsWidth# + _
                   ActiveWindow.Width / 2 * 100 / ActiveWindow.Zoom
            cy2# = Rows(ActiveWindow.ScrollRow).Top - TopRowsHeight# + _
                   ActiveWindow.Height / 2 * 100 / ActiveWindow.Zoom
 
            dw# = .Width * (ZOOM_RATIO# - 1) / STEPS_COUNT&
            dx# = (cx2# - cx1#) / STEPS_COUNT&: dy# = (cy2# - cy1#) / STEPS_COUNT&
            cx# = cx1#: cy# = cy1#: dt# = ZOOM_SPEED# / 50 / STEPS_COUNT&
 
            For i& = 1 To STEPS_COUNT&
                t = Timer: cx# = cx# + dx#: cy# = cy# + dy#
                .Width = .Width + dw#: .Left = cx# - .Width / 2: .Top = cy# - .Height / 2
                While Timer - t < dt#: DoEvents: Wend
            Next i
        End With
    End If
End Sub

Предположим, вы вставили список изображений в столбец и сопоставили размеры изображений с размерами ячеек, как показано на скриншоте ниже. Поскольку вставленное изображение выглядит маленьким, вам может потребоваться увеличить его для некоторых целей. В этой статье будет показан способ увеличения изображения при нажатии на него в Excel и восстановления исходного размера вторым щелчком.

Увеличивать изображение при нажатии на него с кодом VBA


Увеличивать изображение при нажатии на него с кодом VBA

Следующий код VBA может помочь вам увеличить изображение, щелкнув его в Excel. Пожалуйста, сделайте следующее.

1. Щелкните правой кнопкой мыши изображение, которое необходимо увеличить, просто щелкнув по нему, затем щелкните Назначить макрос из контекстного меню. Смотрите скриншот:

2. в Назначить макрос диалоговое окно, щелкните Новинки кнопку.

3. Во всплывающем Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA между ниже и End Sub коды. Смотрите скриншот:

Код VBA: увеличьте изображение, щелкнув по нему в Excel

Dim shp As Shape
    Dim big As Single, small As Single
    Dim shpDouH As Double, shpDouOriH As Double
    big = 3   
    small = 1 
    On Error Resume Next
    Set shp = ActiveSheet.Shapes(Application.Caller)
    With shp
        shpDouH = .Height
        .ScaleHeight 1, msoTrue, msoScaleFromTopLeft
        shpDouOriH = .Height
    
        If Round(shpDouH / shpDouOriH, 2) = big Then
            .ScaleHeight small, msoTrue, msoScaleFromTopLeft
            .ScaleWidth small, msoTrue, msoScaleFromTopLeft
            .ZOrder msoSendToBack
        Else
            .ScaleHeight big, msoTrue, msoScaleFromTopLeft
            .ScaleWidth big, msoTrue, msoScaleFromTopLeft
            .ZOrder msoBringToFront
        End If
    End With

Внимание: В коде можно назначить большие размеры картинки в коде big = 3.

4. Затем нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента, когда вы нажимаете на изображение, оно будет увеличено до указанного вами размера, а повторное нажатие вернет его к исходному размеру, как показано на скриншотах ниже.


Статьи по теме:

  • Как заблокировать изображение / изображение в ячейке или внутри нее в Excel?
  • Как динамически вставлять изображение или изображение в ячейку на основе значения ячейки в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (9)


Оценок пока нет. Оцените первым!

Предлагаю всем интересующимся макрос, который масштабирует картинки в Excel.

При открытии книги назначаются сочетания клавиш, которые позволяют каждой картинке в рабочей книге присвоить оригинальное имя, базовый масштаб (в Замещающий текст) и назначить макрос, который при клике на картинку будет выполнять её увеличение.

Отдельные картинки, в режиме когда они увеличены, можно масштабировать динамически с сохранением нового значения масштаба используя клавиши Ctrl+Alt+UP и Ctrl+Alt+DOWN.

Для присвоения базового масштаба картинкам необходимо после открытия книги с данным макросом нажать Ctrl+Alt+Right. По умолчанию картинкам присваивается масштаб равный 90% высоты всех строк, которые видны на экране. Если размеры экрана изменить — изменится и размер увеличенной картинки.

Чтобы заменить значение по умолчанию для всех картинок используются клавиши Ctrl+Alt+Left
Текст макроса с комментариями ниже:

Private Sub auto_open()
Application.OnKey "^%{RIGHT}", "EnumImageV2" 'Запуск перенумерации картинок выполняется по нажатию клавиш Ctrl+Alt+Стрелка вправо
Application.OnKey "^%{LEFT}", "ImgScaleAll" 'Изменение масштаба всех картинок на листе выполняется по нажатию клавиш Ctrl+Alt+Стрелка влево
ThisWorkbook.OnSheetActivate = "DelImg" 'Сброс увеличенных картинок при переключении листов
End Sub

Private Sub ImgScaleAll()
    DelImg                  'Удаляются все увеличенные ккартинки
    dblSend = InputBox("Масштаб задается в виде положительной десятичной дроби" & Chr(13) & "(разделитель запятая)" & Chr(13) _
    & "Чем больше цифра, тем больше картинка", "Укажите масштаб для ВСЕХ картинок", 0.9)
    On Error Resume Next
    dblSend = CDbl(dblSend)  'Если  введено правильное число, через запятую, то все пойдёт дальше, иначе сообщение об  ошибке
    If Err Then
        If MsgBox("Вы ввели неверное значение" & Chr(13) & "Хотите повторить?", vbYesNo) = vbYes Then
            ImgScaleAll         'Перезапуск текущего макроса, при желании  пользователя повторить ввод
        Else: Exit Sub          'При отказе  пользователя повторить ввод - выход из макроса
        End If
    End If
    Err.Clear
    EnumImageV2 CDbl(dblSend)   'вызывается макрос  перенумерации картинок, но в нем не выполняется перенумерация, а просто присваивается новый масштаб
End Sub

Private Sub ImgScalePlus()
With ActiveSheet
    For Each ZmImg In .Shapes                                       'выполняется  проверка названий всех картинок на листе
      If ZmImg.Name Like "Zoom*" Then                               'Отбирается картинка, у которой в названии есть Zoom
        strImgName = Mid(ZmImg.Name, 5)                             'Вырезается имя исходной картинки
        varData = CDbl(.Shapes(strImgName).AlternativeText) + 0.1   'Определяется значение масштабированияя исходной картинки и увеличивается на 10%
        .Shapes(strImgName).AlternativeText = CStr(varData)         'Новое значение масштабирования присваивается исходной картинке
        ZoomImageV3 CStr(strImgName)                                'Вызывается макрос ZommImageV3
      End If
    Next
End With
End Sub

Private Sub ImgScaleMinus()
With ActiveSheet
    For Each ZmImg In .Shapes                                       'выполняется  проверка названий всех картинок на листе
      If ZmImg.Name Like "Zoom*" Then                               'Отбирается картинка, у которой в названии есть Zoom
        strImgName = Mid(ZmImg.Name, 5)                             'Вырезается имя исходной картинки
        varData = CDbl(.Shapes(strImgName).AlternativeText) - 0.1   'Определяется значение масштабированияя исходной картинки и уменьшается на 10%
        .Shapes(strImgName).AlternativeText = CStr(varData)         'Новое значение масштабирования присваивается исходной картинке
        ZoomImageV3 CStr(strImgName)                                'Вызывается макрос ZommImageV3
      End If
    Next
End With
End Sub


Private Sub EnumImageV2(Optional dblSnd As Double)
' Макрос находит все картинки в активной книге и нумерует их по порядку
' начиная с левого верхнего угла и после присвоения номера сразу назначает картинке макрос ZoomImageV3
' совершенно не важно когда запускать этот макрос: до назначения масштабирования или после
' масштаб,  который указан в замещающем тексте  представляет собой процент от размеров текущей  рабочей области представленной на экране
i = 1
    For Each varShtsItm In ActiveWorkbook.Sheets
        For Each varImgItm In varShtsItm.Shapes
            If varImgItm.Name Like "Image_*" Then                       'Отрабатывает при запуске пользователем макроса по изменению масштаба для всех картинок
                If dblSnd > 0 Then varImgItm.AlternativeText = dblSnd   'Если масштаб был изменён, то значение  записывается в Замещающий  текст  картинки
            Else                                                        'Если картинка ранее не нумеровалась, то меняется её  имя  и ей присваивается номер
                 varImgItm.Name = "Image_" & i                          'Новые Имя и номер картинки
                 varImgItm.OnAction = "ZoomImageV3"                     'Назначение макроса масштабирующего картинку
                 varImgItm.AlternativeText = "0,9"                      'Запись  в  замещающий  текст  масштаба по умолчанию
            End If
        i = i + 1
        Next
    Next
End Sub

Private Sub ZoomImageV3(Optional strImgName As String)
Attribute ZoomImageV3.VB_ProcData.VB_Invoke_Func = " n14"
    Dim dblWinHeight As Double, dblWinWidth As Double
    Dim dblWinCenterTop As Double, dblWinCenterLeft As Double   'переменные для определения параметров окна
    Dim objPict0 As Shape, objPict As Shape                     'переменные-объекты для работы с картинками
    Dim PictZoom As Double                                      'Переменная определяет размер картинки  по которому она будет отмасштабирована
    With ActiveWindow.VisibleRange                                              'Вычисляем параметры видимой на экране области
        dblWinHeight = WorksheetFunction.Round(.Height, 2)                      'Высота видимой области ячеек
        dblWinWidth = WorksheetFunction.Round(.Width, 2)                        'Ширина видимой области ячеек
        dblWinCenterTop = WorksheetFunction.Round(.Top + dblWinHeight / 2, 2)   'Расстояние сверху до центра видимой области ячеек
        dblWinCenterLeft = WorksheetFunction.Round(.Left + dblWinWidth / 2, 2)  'Расстояние слева до центра видимой области ячеек
    End With
    On Error Resume Next
    Set objPict0 = ActiveSheet.Shapes(Application.Caller)       'Обработка нажатия мышкой на картинке
    If Err Then
        V = strImgName
        Set objPict0 = ActiveSheet.Shapes(V)
    End If
    Err.Clear
    On Error Resume Next
    DelImg                               'Проверка наличия и удаление увеличенных рисунков, отмена назначения кнлавиши ESC (подпрограмма)
    If Err Then Exit Sub                 'Если  удаление картинки было вызвано отмасштабированной картинкой, то происходи выход из макроса
    Err.Clear
    On Error Resume Next
    сZoomWin = CDbl(objPict0.AlternativeText)    'переменная, задающая коэффициент масштабирования картинки относительно границ рабочей области окна, значение берётся из Альтернативного текста картинки
    If Err Then
        сZoomWin = 0.9                       'Если в Альтернативном тексте введено некорректное значение, то присваивается значение по умолчанию
        objPict0.AlternativeText = "0,9"
    End If
    Err.Clear
    Set objPict = objPict0.Duplicate        'Создание копии картинку, которая будет увеличиваться
    objPict.Name = "Zoom" & objPict.Name    'Добавление к новой картинке префикса "Zoom"
    objPict.LockAspectRatio = msoTrue       'Активация свойства рисунка,  при котором размеры изменяются пропорционально
    If dblWinHeight < dblWinWidth Then      'Проверка параметров окна, что больше высотиа или ширина окна
        PictZoom = dblWinHeight * сZoomWin  ' Если высота окна меньше ширины, то за основу берётся меньшая величина (высота)
    Else
        PictZoom = dblWinWidth * сZoomWin   ' Если высота окна больше ширины, то за основу берётся меньшая величина (ширина)
    End If
    With objPict                    'Работаем с картинкой и её свойствами
        If .Height > .Width Then    'Проверка параметров картинки
            .Height = PictZoom      'Если высота картинки больше ширины, то картинка масштабируется по высоте
        Else
            .Width = PictZoom       'Если высота картинки меньше ширины, то картинка масштабируется по ширине
        End If
        .Top = WorksheetFunction.Round(dblWinCenterTop - (.Height / 2), 2)  'Определение положения верхней границы картинки
        .Left = WorksheetFunction.Round(dblWinCenterLeft - (.Width / 2), 2) 'Определение положения левой границы картинки
    End With
  Application.OnKey "{ESC}", "DelImg"          'Назначение клавиши ESC для удаления увеличенных картинок
  Application.OnKey "^%{UP}", "ImgScalePlus" 'Увеличение масштаба отдельной картинки выполняется по нажатию клавиш Ctrl+Alt+Стрелка вверх
  Application.OnKey "^%{DOWN}", "ImgScaleMinus" 'Уменьшение масштаба отдельной картинки выполняется по нажатию клавиш Ctrl+Alt+Стрелка вниз
End Sub

Private Sub DelImg()
With ActiveSheet
    For Each ZmImg In .Shapes                       'выполняется  проверка названий всех картинок на листе
      If ZmImg.Name Like "Zoom*" Then ZmImg.Delete  'удаляются картинки с названием,  содержащим "Zoom"
    Next
End With
Application.OnKey "{ESC}"                           'Присвоение клавише ESC стандартной функции
Application.OnKey "^%{UP}"                           'Сброс  функционала  клавиш
Application.OnKey "^%{DOWN}"                         'Сброс  функционала  клавиш
End Sub
 

netep

Пользователь

Сообщений: 2
Регистрация: 30.01.2013

Добрый день всем!
Прошу прощения если таковая тема уже есть (прошу дать на нее ссылку), но я не нашел.
Ситуация следующая: Есть некая картинка на листе Excel. Необходимо чтоб при наведении на нее она увеличивалась до большого размера, а после того как курсор уводишь в сторону снова сворачивалась, или чтоб тоже самое происходило по щелчку на эту картинку, а по второму щелчку она сворачивалась.

 

netep

Пользователь

Сообщений: 2
Регистрация: 30.01.2013

The_Prist, Спасибо но это не совсем то, точнее то но там не имеет значение сама картинка я не могу терять в качестве, так как картинкой будет являться официальный документ. и он должен быть читаем.
Я если честно очень сильно не знаком с Макросами, поэтому если кто то может напиши прям сюда как мне сделать и что добавить в макрос, и надо ли делать дополнительные кнопки, если да то как сделать их

 

По щелчку сделать легко
Отслеживать же наведение мыши — сложно

Может, устроит только вариант с щелком мыши по картинке?

 

torres09

Пользователь

Сообщений: 4
Регистрация: 12.03.2013

#6

12.03.2013 21:33:42

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

Skip to content

Как изменить масштаб изображения листа

На чтение 2 мин. Просмотров 2.1k.

Что делает макрос: Некоторые электронные таблицы огромны. Иногда, мы вынуждены изменить масштаб изображения, чтобы видеть всю таблицу на экране. Если вы обнаружите, что вы постоянно масштабируете таблицы, чередуя между сканированием больших разделов данных и чтением конкретных ячеек, вот удобный макрос, который будет автоматически изменять масштаб на двойном щелчке.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как использовать

Как макрос работает

С помощью этого макроса, вы можете дважды щелкнуть на ячейку в таблице, чтобы увеличить на 200 процентов. Дважды щелкните снова и Excel изменит масштаб изображения обратно на 100 процентов. Также вы можете изменить значения в коде, чтобы соответствовало вашим потребностям.

Код макроса

Private Sub Worksheet_BeforeDouble Click()
 'Проверить текущее состояние - Увеличить
 'Увеличить на 100%
'Увеличение на 200%, если текущее 100
 If ActiveWindow.Zoom <> 100 Then
 ActiveWindow.Zoom = 100
 Else
 ActiveWindow.Zoom = 200
 End If
 End Sub

Обратите внимание, что побочный эффект двойного щелчка ячейки является то, что он переходит в режим редактирования. Вы можете выйти из режима редактирования, нажав клавишу Esc на клавиатуре. Если вам это мешает, несколько раз нажмите Esc при срабатывании этого макроса, вы можете добавить это заявление в конце процедуры:
Application.SendKeys («{ESC}»)
Этот оператор имитирует нажатия ESC на клавиатуре.

Как использовать

Для реализации этого макроса, вам нужно скопировать и вставить его в окно кода события Worksheet_BeforeDouble Click. Это позволяет запускать каждый раз, когда вы дважды щелкните на листе.

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. В окне проекта, найти свой проект / имя рабочей книги и нажмите на знак плюс рядом с ней, чтобы увидеть все листы.
  3. Нажмите на лист, из которого вы хотите, чтобы вызвать код.
  4. Выберите событие BeforeDoubleClick из событий в раскрывающемся списке.
  5. Введите или вставьте код во вновь созданном модуле.

BeforeDoubleClick

Здесь можно получить ответы на вопросы по Microsoft Excel 57350 469102

30 Сен 2018 13:56:23

44519 357828

29 Янв 2017 17:28:40

Лучшие избранные темы с основного форума 14 80

28 Июн 2018 15:25:11

Если вы — счастливый обладатель Mac 😉 217 1059

21 Сен 2018 06:21:34

Раздел для размещения платных вопросов, проектов и задач и поиска исполнителей для них. 2080 13278

29 Сен 2018 20:15:30

Если Вы скачали или приобрели надстройку PLEX для Microsoft Excel и у Вас есть вопросы или пожелания — Вам сюда. 307 1580

28 Сен 2018 09:07:46

800 11414

30 Сен 2018 13:59:28

Обсуждение функционала, правил и т.д. 268 3463

28 Сен 2018 12:42:51

Сейчас на форуме (гостей: 353, пользователей: 13, из них скрытых: 4) , , , , , , , ,

Сегодня отмечают день рождения (35), (45), (47), (60)

Всего зарегистрированных пользователей: 82854

Приняло участие в обсуждении: 31731

Всего тем: 105554

Наверняка многие из вас задавались вопросом: а можно ли в Excel, наведя мышь на ячейку, к примеру, с наименованием товара, сразу получить всплывающую подсказку с изображением, связанным с содержимым ячейки?

Так сделать можно, и довольно просто!

Кликните правой кнопкой мыши на ячейке и выберите «Вставить примечание» (рис. 1).

как сделать увеличивающуюся картинку в excel

Рис. 1

Щелкните правой кнопкой мыши на границе примечания и выберите «Формат примечания» (рис. 2).

как сделать увеличивающуюся картинку в excel

Рис. 2

В открывшемся окне переходим на вкладку «Цвета и линии», раскрываем выпадающий список «Цвет» и выбираем пункт меню «Способы заливки» (рис. 3).

как сделать увеличивающуюся картинку в excel

Рис. 3

В открывшемся окне «Способы заливки» нажимаем кнопку «Рисунок», ищем интересующий файл изображения и подтверждаем свой выбор (рис. 4).

как сделать увеличивающуюся картинку в excel

Рис. 4

После выбора изображения ставим галочку «Сохранять пропорции рисунка» и нажимаем «ОК» (рис 5.).

как сделать увеличивающуюся картинку в excel

Рис. 5

Мышью регулируем размер примечания, чтобы картинка была хорошо видна. Затем, щелкаем на ячейке правой кнопкой мыши и выбираем «Скрыть примечание» (рис. 6)

как сделать увеличивающуюся картинку в excel

Рис. 6

Теперь, при наведении курсора на ячейку мы видим связанное с ней изображение (рис.7).

как сделать увеличивающуюся картинку в excel

Рис. 7

8 ноября 2012, 22:59

Я давно хотела узнать, как можно увеличить рисунок, сделать его форматом больше чем А-4. 

1.Выбрать на компьютере программу Microsoft Office Excel 2007, нажав на надпись 1 раз курсором ( левая клавиша мыши): 

2.Открылась программа, 1 раз нажмите на клеточку, выделенную в верхнем левом углу – это зафиксирует ваше изображение в дальнейшем на этой точке

3.Найдём раздел «вставка» и нажимаем 1 раз всё той же клавишей:
4. выбираем в открывшемся окошке «рисунок» и нажимаем опять 1 раз:
5. В открывшемся окне обычным образом выбираем рисунок, выбранный для увеличения, пометили(1 раз): 
6. Вставляем (1 раз): 
7. Видим, что рисунок разместился в программе на клеточках для увеличения:
8. Подводим курсор к правому нижнему (свободному) углу картинки, нажимаем на клавишу –левую- и не отпуская, растягиваем картинку чуть –чуть, убеждаясь, что это возможно
9.Теперь нам надо сделать разметку, Выбрать нужный размер картинки, 1 раз нажимая на «разметка страницы»:
10. Нажимаем 1 раз «размер» в открывшемся окне:
11.Выбираем в открывшемся окне «А4» и нажимаем 1 раз:
12.Убедились, что на поле появилась сетка из линий – это разметка страниц:
13.Повторим пункт «8» с учётом необходимого размера картинки:

14.Последний шаг. Картинка увеличена, осталось предварительно просмотреть или просто сохранить или напечатать сразу. Для этого нам нужна кнопка Office (помечаем 1 раз):
15. Если наша цель – просто получить увеличение, то при печати надо не забыть в «свойства» поставить «Быстрая черновая печать». В итоге получаем несколько страниц А4, которые надо соединить, чтобы получить увеличенный рисунок.
Вот и всё!!! Попробуйте! Обязательно получится! 
Увеличивать картинки позволяет любая версия этой программы!!! Есть только небольшие нюансы, которые легко освоить.

На чтение 2 мин. Просмотров 356 Опубликовано 23.05.2021

Предположим, вы вставили список изображений в столбец и сопоставили размеры изображений с размерами ячеек, как показано на скриншоте ниже. Поскольку вставленное изображение выглядит маленьким, вам может потребоваться увеличить его для некоторых целей. В этой статье будет показан способ увеличения изображения при нажатии на него в Excel и восстановления исходного размера вторым щелчком.


Увеличивать изображение при нажатии на него кодом VBA

Потрясающе! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Сэкономьте 50% своего времени и сократите тысячи щелчков мышью каждый день!

Следующий код VBA может помочь вам увеличить изображение, щелкнув по нему в Excel. Пожалуйста, сделайте следующее.

1. Щелкните правой кнопкой мыши изображение, которое нужно увеличить, просто щелкнув по нему, затем нажмите Назначить макрос в контекстном меню. См. Снимок экрана:

2. В диалоговом окне Назначить макрос нажмите кнопку Создать .

3. Во всплывающем окне Microsoft Visual Basic для приложений скопируйте и вставьте приведенный ниже код VBA между Sub и End Sub сильные> коды. См. Снимок экрана:

Код VBA: увеличьте изображение, щелкнув по нему в Excel.

Примечание : В коде вы можете назначить большие размеры изображения в коде big = 3.

4. Затем одновременно нажмите клавиши Alt + Q , чтобы закрыть окно Microsoft Visual Basic для приложений .

С этого момента, когда вы щелкаете по изображению, оно будет увеличено до указанного вами размера, а повторное нажатие вернет его к исходному размеру, как показано на скриншотах ниже.


Статьи по теме :

  • Как заблокировать изображение/изображение в ячейке или внутри нее в Excel?
  • Как динамически вставлять изображение или изображение в ячейку на основе по значению ячейки в Excel?

0 / 0 / 0

Регистрация: 26.09.2011

Сообщений: 14

1

09.10.2011, 17:11. Показов 7078. Ответов 15


Студворк — интернет-сервис помощи студентам

Доброго времени суток. Помогите пожалуйста!

Имеется форма в excel на ней есть картинка и кнопка и нужно при помощи Do…Loop и параметров width и height что бы после нажатия кнопки картинка увеличилась.



0



programmer_11

97 / 72 / 28

Регистрация: 08.10.2011

Сообщений: 130

09.10.2011, 20:38

2

Создай форму, назови ее forma, картину на форме назови img, а кнопку ОК.
Теперь в редакторе напиши следующий код.

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub OK_Click()
Do
forma.img.width=forma.img.width+1
forma.img.height=forma.img.height+1
if forma.img.width=финальное_значение And forma.img.height=финальное_значение Then
Exit do
End if
Loop
End Sub

Разумеется, вместо финальное_значение введите значения финальной величены и ширины картины.



1



Почетный модератор

21371 / 9105 / 1082

Регистрация: 11.04.2010

Сообщений: 11,014

09.10.2011, 20:55

3

Цитата
Сообщение от programmer_11
Посмотреть сообщение

if forma.img.width=финальное_значение And forma.img.height=финальное_значение Then

Это условие может никогда не выполниться, ширина и высота картинки скорее всего разные, а переменная финальное_значение — одна и та же
Поэтому целесообразнее будет использовать Or вместо And



1



6644 / 1511 / 169

Регистрация: 09.01.2010

Сообщений: 4,298

09.10.2011, 21:42

4

имхо менять на определенный шаг один размер, а второй на величину пропорциональную отношению начальных размеров картинки



1



0 / 0 / 0

Регистрация: 26.09.2011

Сообщений: 14

09.10.2011, 22:03

 [ТС]

5

не понимаю все равно не получается(( с OR лучше но не то…
картинка ускакивает а должна растянуться на форму и почему то при выполнение постоянно все виснет((( может там что то еще надо было?? хелп…



0



programmer_11

97 / 72 / 28

Регистрация: 08.10.2011

Сообщений: 130

09.10.2011, 22:03

6

Спасибо за замечания, вы правы. Вот отредактированный код.

Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub OK_Click
x=0
Do
x=x+1
forma.img.width=forma.img.width+1
if forma.img.width=финальное_значение Then
forma.img.height=forma.img.height+x
Exit do
Loop
End Sub



1



0 / 0 / 0

Регистрация: 26.09.2011

Сообщений: 14

09.10.2011, 22:32

 [ТС]

7

Вроде похоже на правду,спс всем!!



0



0 / 0 / 0

Регистрация: 07.01.2014

Сообщений: 3

07.01.2014, 16:22

8

Куда вставлять этот код
У меня Exsel 2003
простым языком
Мне нужно сделать прайс с картинками
чтобы картинки увеличивалиь при наведении курсора или щелчке левой мышкой
затем уменьшались при повторном щелчке



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

07.01.2014, 17:35

9

Вообще-то в чужих темах задавать вопросы не по правилам…
Вот пример
Но тут надо писать процедуру каждой картинке



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

07.01.2014, 17:37

10

Мне больше подходит массив картинок.
Просмотр при удержании ЛКМ



0



0 / 0 / 0

Регистрация: 07.01.2014

Сообщений: 3

09.01.2014, 20:37

11

Спасибо. То что нужно. Но куда это вставить. Может в Программ филес?



0



0 / 0 / 0

Регистрация: 15.10.2014

Сообщений: 28

15.10.2014, 21:06

12

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Мне больше подходит массив картинок.
Просмотр при удержании ЛКМ
Увеличение при клике.rar

День добрый. Извините, что поднимаю топик, но мне как раз очень подходит данный макрос за одним исключением — нужно избавиться от кнопки.
Нужно, чтоб после открытия файла сразу можно было кликать картинки.
Может можно как то реализовать автонажатие кнопки, а саму кнопку скрыть?
Помогите пожалуйста.
Спасибо.



0



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

15.10.2014, 21:29

13

Кто мешает использовать событие Workbook_Open?

Visual Basic
1
Private Sub Workbook_Open()

Впиши код кнопки. кнопку удали



1



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

16.10.2014, 06:51

14

А так?

Не по теме:

Извините, все вложения в теме не смотрел, поэтому может быть уже есть подобный вариант.



0



TitanFighter

0 / 0 / 0

Регистрация: 15.10.2014

Сообщений: 28

17.10.2014, 16:02

15

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Кто мешает использовать событие Workbook_Open?

Visual Basic
1
Private Sub Workbook_Open()

Впиши код кнопки. кнопку удали

Помогло. Спасибо.

Цитата
Сообщение от SoftIce
Посмотреть сообщение

А так?

Не по теме:

Извините, все вложения в теме не смотрел, поэтому может быть уже есть подобный вариант.

Никак не могу въехать, почему не работает макрос с моими картинками.
Вставляю картинку, присваиваю ей макрос. Клацаю на картинку, а увеличивается все равно Мистер Бин)
Что делаю не так?

Добавлено через 13 минут
Еще такой вопрос.
Если брать за основу

Мне больше подходит массив картинок.
Просмотр при удержании ЛКМ
Вложения
Тип файла: rar Увеличение при клике.rar

который использует картинки через ActiveX, Екселевский файл раздувается. Я вставляю 1 картинку размером 30кб, а на выходе получаю файл в 400кб. Мне нужно вставить 234 картинки) Как бороться с этой проблемой? Как сделать так, чтоб используя картинки ActiveX, размер файла +- соответствовал размеру картинок? В инете искал, так решения и не нашел.



0



TitanFighter

0 / 0 / 0

Регистрация: 15.10.2014

Сообщений: 28

22.10.2014, 14:02

16

Добрый день.

Кто может подсказать, как сделать так, чтоб картинка открывалась не по координатам, прописанным ниже, а увеличивалась вниз и вправо от текущего местоположения (от текущей ячейки, на которой находится картинка)?

Visual Basic
1
2
3
4
cx2# = Columns(ActiveWindow.ScrollColumn).Left - LeftColumnsWidth# + _
                    ActiveWindow.Width / 2 * 100 / ActiveWindow.Zoom
cy2# = Rows(ActiveWindow.ScrollRow).Top - TopRowsHeight# + _
                    ActiveWindow.Height / 2 * 100 / ActiveWindow.Zoom

Спасибо.



0



Как плавно увеличить картинку на форме

Lizard

Дата: Понедельник, 10.06.2019, 08:34 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Доброго дня.
Помогите решить вопрос с формой.

Макрос в файле — запускает форму с картинкой.
Как сделать так, чтобы картинка на форме медленно увеличивалась из центра ?
При этом форма должна остаться неизменной.

(То есть картинка будет как бы выезжать за пределы формы.)

 

Ответить

Fidgy

Дата: Понедельник, 10.06.2019, 15:07 |
Сообщение № 2

Группа: Пользователи

Ранг: Участник

Сообщений: 50


Репутация:

11

±

Замечаний:
0% ±


Excel 2016

Само изображение в форме никак, нужно добавить объект Image в форму с параметром PictureSizaMod = 1
Далее в событии UserForm_Activate скалировать объект Image с определённым промежутком времени и на каждом шагу отрисовывать UserForm

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 01:35 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Fidgy, что-то не работает.

Я пытаюсь повысить плавность и время увеличения:
[vba]

Код

Private Sub UserForm_Activate()
Dim c As Byte

For c = 1 To 50
UserForm1.Image1.Height = 10 + 20 * c
UserForm1.Image1.Width = 10 + 20 * c
Module1.WaitS 0.3
UserForm1.Repaint
Next
End Sub

[/vba]

Какое-то время рисунок увеличивается, но потом эксель зависает.
Потом еще — рисунок увеличивается не из центра во все стороны, а из левого верхнего угла.

 

Ответить

bmv98rus

Дата: Вторник, 11.06.2019, 07:18 |
Сообщение № 4

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

Lizard,
Три параметра. Шаг изменения размера — плавность, период изменения размера — скорость, число повторов- продолжительность. Их надо рассчитывать относительно друг друга, но для плавности, изменение размера должно быть минимальным из возможного Если надо изменить размер от и до за определенное время, то
[vba]

Код

For c = 1 To 150
UserForm1.Image1.Height = 10 + 1 * c
UserForm1.Image1.Width = 10 + 1 * c
Module1.WaitS 0.1
UserForm1.Repaint
Next

[/vba]
Ну а про увеличение, надо сдвигать девую верхнюю точку на половину увеличения каждый раз, естественно сперва разместив объект по центру.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rusВторник, 11.06.2019, 14:29

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 08:36 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

bmv98rus, у вас картинка начинает рост из угла — по направлению диагонали вправо-вниз.
Я спрашивал про то — как увеличивать картинку из центра — сразу во всех направлениях.

И потом — у вас рост картинки заканчивается, а он не должен заканчиваться — картинка должна выходить за пределы формы.

 

Ответить

RAN

Дата: Вторник, 11.06.2019, 09:36 |
Сообщение № 6

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

картинка должна выходить за пределы формы.

У вас картинка — часть формы. Вы можете привести пример, где часть больше целого?


Быть или не быть, вот в чем загвоздка!

 

Ответить

anvg

Дата: Вторник, 11.06.2019, 10:29 |
Сообщение № 7

Группа: Друзья

Ранг: Ветеран

Сообщений: 581


Репутация:

271

±

Замечаний:
0% ±


2016, 365

Доброе время суток.

Вы можете привести пример, где часть больше целого?

Тёзка, не уловил. А что мешает для Image задать размер больший чем размер UserForm? Ну, да видно будет только та часть, что попадает в размеры формы, но сам же объект Image будет больше по размеру. Или я чего-то не понимаю?

 

Ответить

Fidgy

Дата: Вторник, 11.06.2019, 10:40 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 50


Репутация:

11

±

Замечаний:
0% ±


Excel 2016

Lizard, чтобы картинка росла из центра во все направления, то нужно UserForm1.Image1 разместить по центру UserForm1 и менять координаты изображения влево вверх на половину значения увеличения
Примерно так:
[vba]

Код

For c = 1 To 150
UserForm1.Image1.Height = 10 + 1 * c
UserForm1.Image1.Width = 10 + 1 * c
UserForm1.Image1.Left = 30 — (1 * c)/2
UserForm1.Image1.Top = 30 — (1 * c)/2
Module1.WaitS 0.1
UserForm1.Repaint
Next

[/vba]

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 10:54 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Fidgy, да, примерно так.
Но она растет сейчас не из центра формы, а как-то из первой половины формы.

И еще — когда рисунок достигает края формы — он перестает увеличиваться.
Но он должен увеличиваться постоянно, выходя за край формы (то есть не переставая увеличиваться).

 

Ответить

bmv98rus

Дата: Вторник, 11.06.2019, 11:25 |
Сообщение № 10

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

Lizard, Судя по всему, вы не читаете текст а ждете готового решения.

а он не должен заканчиваться

то есть организуем замкнутый цикл до тех пор пока центральный пиксель картинки не станет занимать всю форму, Хотя дальше цикл может продолжаться, но изображение меняться не будет.
Ну поиграйте вы коэффициентами. Уже все есть, почти, осталось сместить начальную картинку по центру формы. Как это делать ? — А как это связано конкретно с этой темой?


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 11:55 |
Сообщение № 11

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

bmv98rus, я вроде в первом сообщении — написал о том, что рисунку нужно выезжать за пределы формы.

 

Ответить

bmv98rus

Дата: Вторник, 11.06.2019, 12:33 |
Сообщение № 12

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

что рисунку нужно выезжать за пределы формы.

до каких пор? Ну в варианте из #2 выезжает но рывками. Я изменил просто параметры и пошло плавно, но надо просто задать больше циклов, ну что тут не понятного?


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 12:37 |
Сообщение № 13

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

bmv98rus, так а как же это сделать ?

Ну в варианте из #2 выезжает но рывками.

Я не вижу, что выезжает.
Рисунок просто касается границы формы и его рост останавливается — в этот момент.

 

Ответить

Fidgy

Дата: Вторник, 11.06.2019, 13:05 |
Сообщение № 14

Группа: Пользователи

Ранг: Участник

Сообщений: 50


Репутация:

11

±

Замечаний:
0% ±


Excel 2016

Lizard, у меня рисунок успешно выходит за границы

Цитата

Но она растет сейчас не из центра формы, а как-то из первой половины формы.

[vba]

Код

Private Sub UserForm_Activate()
Dim c As Byte, H As Single, W As Single, L As Single, T As Single
With UserForm1
H = .Image1.Height
W = .Image1.Width
L = .Image1.Left
T = .Image1.Top

For c = 0 To 60
    .Image1.Height = H + 10 * c
    .Image1.Width = W + 10 * c
    .Image1.Left = L — (10 * c) / 2
    .Image1.Top = T — (10 * c) / 2
    Module1.WaitS 0.1
    .Repaint
Next
End With
End Sub

[/vba]

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 13:54 |
Сообщение № 15

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Fidgy, спасибо.
Попытался замедлить увеличение, увеличив число цикла.
Но теперь выдает ошибку Run-time error 429

[vba]

Код

Private Sub UserForm_Activate()
Dim c As Byte, H As Single, W As Single, L As Single, T As Single
With UserForm1
H = .Image1.Height
W = .Image1.Width
L = .Image1.Left
T = .Image1.Top

For c = 0 To 400
    .Image1.Height = H + 0.1 * c
    .Image1.Width = W + 0.1 * c
    .Image1.Left = L — (0.1 * c) / 2
    .Image1.Top = T — (0.1 * c) / 2
    Module1.WaitS 0.1
    .Repaint
Next
End With
End Sub

[/vba]

Как можно исправить эту ошибку ?

К сообщению приложен файл:

1_2.xls
(59.0 Kb)

 

Ответить

bmv98rus

Дата: Вторник, 11.06.2019, 14:30 |
Сообщение № 16

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016

Три параметра. Шаг изменения размера — плавность, период изменения размера — скорость, число повторов- продолжительность.


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 14:37 |
Сообщение № 17

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

bmv98rus, ну так вот я — поставил 400 вместо 200, и перестал макрос работать.
Это как я понял — продолжительность.

 

Ответить

Pelena

Дата: Вторник, 11.06.2019, 14:44 |
Сообщение № 18

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Объявление [vba][/vba] означает, что с не может быть больше 256


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Lizard

Дата: Вторник, 11.06.2019, 15:38 |
Сообщение № 19

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

А можно как-то еще более плавно увеличивать картинку ?
Потому что сейчас все равно как будто какими-то мелкими рывками она увеличивается.

К сообщению приложен файл:

1_3.xls
(59.5 Kb)

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Макрос для текстового процессора ms word
  • Макрос для суммы прописью word
  • Макрос для суммирования ячеек в excel
  • Макрос для среднего значения в excel
  • Макрос для сравнения ячеек excel