Excel VBA: копирование изображений из элементов управления изображениями в объекты ActiveX - PullRequest
0 голосов
/ 11 октября 2011

У меня есть серия изображений, которые мне нужно отображать несколько раз в обеих формах (с помощью элементов управления изображениями) и на рабочих листах (с помощью элементов управления изображениями ActiveX).Я знаю, что могу хранить файлы извне и использовать метод loadpicture;но есть кое-что, чего я хотел бы избежать, если это возможно.

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

Я думаю, что, возможно, есть решение с использованием буфера обмена, но я не смог заставить работать синтаксис.Объект всегда встроен в одно и то же место (а);он никогда не перемещается и не изменяет размер или другие свойства (за пределами .visible).Так что я действительно хотел бы сделать что-то простое:

Sheet1.oleobjects("toImage").object.picture = frm1.fromImage.picture

** Редактировать: **
Я думаю, что нашел решение для этого;но все еще есть связанный вопрос.

Я решил, что могу делать то, что хочу, если я вставляю серию изображений ActiveX в лист;затем ссылки на них в фактические элементы управления / объекты, которые я хочу.Итак,

Sheet1.oleobjects("toImage").object.picture=Sheet1.oleobjects("FromImage").object.picture

или

frm1.Controls("toImage").picture = Sheet1.oleobjects("FromImage").object.picture

Но нижеприведенное не работает, когда я пытаюсь сделать то же самое, используя вставленное изображение (объект формы);

frm1.toImage.picture =  sheet1.shape("FromImage").picture

.. неверный синтаксис.Кажется, единственное, что я могу с ними сделать, это скопировать их - я не мог использовать их для установки изображения другого объекта без использования буфера обмена.

Решение выше работает для меня (с использованием серии activeXобъекты изображения, а не картинки), но мне любопытно, почему я не могу использовать стандартную картинку (фигуру).

1 Ответ

0 голосов
/ 17 марта 2015

Если вы хотите добавить изображение в свой лист Excel, используйте что-то вроде этого:
(Вы можете изменить ActiveSheet на свой любимый лист)

Dim aSheet As Worksheet
Dim aShape As Shape
Set aSheet = ActiveSheet
Set aShape = aSheet.Shapes.AddPicture("<FileName>", msoFalse, msoTrue, 120, 120, 200, 200)

И для более подробной информации:

Функция AddPicture (имя файла как строка, LinkToFile как MsoTriState, SaveWithDocument как MsoTriState, слева как один, сверху как один, ширина как один, высота как один) как форма

Функция AddPicture2 (имя файла как строка, LinkToFile как MsoTriState, SaveWithDocument как MsoTriState, слева как один, сверху как один, ширина как один, высота как один, сжатие как MsoPictureCompress) как форма


И если вы хотите загрузить изображение в ваш Image компонент в вашей форме:
(Добавьте компонент Image в вашу форму [: Image1])

Set Image1.Picture = LoadPicture("<FileName>")
...