
В Excel, скажем, я выбираю изображение, например test.jpeg, в качестве фона комментария. Я хочу, чтобы поле комментария имело размеры test.jpeg. Поскольку я планирую иметь сотни таких комментариев, у меня вопрос: есть ли способ автоматизировать это?
решение1
Я повозился с макросом VBA. Откройте редактор VBA с помощью ALT+ F11и вставьте следующий код подлист1. Выполнить макрос с помощью ALT+F8
Что делает макрос
Запросить у пользователя путь к изображению, которое он хочет вставить (может быть jpg, bmp или png)
Загрузите эту картинку как
WIA.imageFile
. Позже мы используемobjImage.Height
иobjImage.Width
для получения реальных размеров изображения.Этот метод оказался самым коротким из найденных мной для получения размеров в пикселях (другие методы VBA могут дать вамтвипсы. Это ужасное изобретение)
Вставьте пустой комментарий в выбранную ячейку, если там еще нет старого комментария.
Установить выбранную картинку в качестве фонового изображения для формы комментария
Измените размеры формы комментария так, чтобы изображение идеально вписалось
Sub InsertComment()
Dim strImagePath As Variant
Dim objImage As Object
strImagePath = Application.GetOpenFilename("Picture, *.jpg; *.png; *.bmp")
If strImagePath = False Then Exit Sub
Set objImage = CreateObject("WIA.ImageFile")
objImage.LoadFile strImagePath
With ActiveCell
If .Comment Is Nothing Then .AddComment ("")
.Comment.Shape.Fill.UserPicture strImagePath
.Comment.Shape.Height = objImage.Height * 0.75
.Comment.Shape.Width = objImage.Width * 0.75
End With
End Sub