Необходимо вставить фото и сделать размер 10 см по высоте.
Использую код, но после второй строки нужна команда на выделение картинки. Отдельно картинка копируется и размер ставится, если вручную выделить.
Действия юзера по работе с макросом.
Юзер где-то копирует рисунок, затем переходит в ворд-файл, ставит курсор в нужную позицию и запускает макрос, который должен вставить рисунок из буфера обмена и настроить этот рисунок.
Перед запуском макроса может быть выделена картинка. Её надо заменить на картинку из буфера обмена.
Ворд 2013 профессиональный.
Макрос
Sub вставка()
Dim inshape As InlineShape
Dim высота As Single, пропорция As Double
' Запись в переменную нужной высоты в мм.
высота = 100
' Вставка содержимого буфера обмена в выделенный фрагмент или в место курсора.
Selection.Paste
For Each inshape In Selection.InlineShapes
пропорция = inshape.Height / inshape.Width
inshape.Width = MillimetersToPoints(высота / пропорция)
inshape.Height = MillimetersToPoints(высота)
Next inshape
End Sub
Предполагается, что ворд настроен так, что рисунок из буфера обмена вставится в абзац, а не будет плавающим.
Выделять рисунок необходимости нет, но если вам это для чего-то надо, то используйте команду после пункта 4:
inshape.Select
Макрос
Sub вставка()
Dim rng As Range, inshape As InlineShape
Dim высота As Single
'1. Запись в переменную нужной высоты в мм.
высота = 100
'2. Удаление рисунка, если выделен рисунок.
If Selection.Type = wdSelectionInlineShape Then
Selection.Delete
End If
'3. Вставка содержимого буфера обмена в выделенный фрагмент или в место курсора.
Selection.Paste
'4. Создаём ссылку на мигающий курсор.
Set rng = Selection.Range.Duplicate
'5. Включаем в ссылку символ, который находится слева от мигающего курсора.
rng.MoveStart Unit:=wdCharacter, Count:=-1
'6. Присваиваем рисунку имя "inshape" и далее можно обращаться в коде к рисунку по этому имени.
Set inshape = rng.InlineShapes(1)
'7. Настройки рисунка.
'1) Ставим галочку "сохранить пропорции", чтобы при изменении высоты, ширина изменялась пропорционально.
inshape.LockAspectRatio = True
'2) Изменение высоты.
inshape.Height = MillimetersToPoints(высота)
End Sub
Вставляется картинка. меняется высота, но не работает пропорция. Я взял кусок из своего макроса, тогда работает:
высота = 100
пропорция = inshape.Height / inshape.Width
inshape.Width = MillimetersToPoints(высота / пропорция)
inshape.Height = MillimetersToPoints(высота)
У меня сохраняются пропорции при использовании моего макроса в ворде 2013.
Может быть у вас какой-то специфический рисунок.
Ещё могут влиять обновления - нужно устанавливать обновления для офиса. Обновления устанавливаются вместе с обновлениями виндоуса.
Фотография имеет размер 254х338 мм, 254 меняется на 100, а вот 338 остается.
Ворд не обновляется и винда тоже.
Буду использовать свой способ настройки пропорции, указанный в ответе 2.
Спасибо Вам большое.