Вопрос про вставку OLE объекта

Программирование на Visual Basic for Applications
konev
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 28.10.2006 (Сб) 17:11
Откуда: Новосибирск

Вопрос про вставку OLE объекта

Сообщение konev » 28.10.2006 (Сб) 18:52

При производстве в Excel такой операции Insert/Object/File (As Link) возникает Shape, содержащий некое изображение. Я встречал два варианта – изображение было пустым или это был некоторый фрагмент листа из вставляемого файла. Из каких соображений выбирался фрагмент, я так и не понял.
Вопрос – где прописывается, что именно должно отображаться в этом Shape?

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 28.10.2006 (Сб) 21:35

Не совсем уверен, что понял вопрос, но может речь об этом (???):

Код: Выделить всё
Sub Test1()
    ActiveSheet.OLEObjects.Add _
        Filename:="C:\temp\test.xls", _
        Link:=True, _
        DisplayAsIcon:=False
End Sub

Код: Выделить всё
Sub Test2()
    Range("A1:E18").Copy
    Range("H3").Select
    ActiveSheet.Pictures.Paste Link:=True
    Application.CutCopyMode = False
End Sub
Привет,
KL

konev
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 28.10.2006 (Сб) 17:11
Откуда: Новосибирск

Сообщение konev » 29.10.2006 (Вс) 20:10

KL писал(а):
Код: Выделить всё
Sub Test1()
    ActiveSheet.OLEObjects.Add _
        Filename:="C:\temp\test.xls", _
        Link:=True, _
        DisplayAsIcon:=False
End Sub


Да, это в точности скрипт той операции, о которой я говорил. При его выполнении (не важно, программно или руками) возникает некоторый Shape. Вчера наблюдал два варианта заполнения этого шейпа - пустоту белого цвета и фрагмент рабочего листа, начинающийся с ячейки A9. Сегодня получил некоторые новые данные - фрагмент, похоже, выбирается так, чтобы начинаться с левого верхнего угла заполненного пространства на листе. Впрочем, эта гипотеза не объясняет происхождения белого фона :)
Собственно, хотелось бы получить возможность самому указывать, что отображать в этом шейпе.

Код: Выделить всё
Sub Test2()
    Range("A1:E18").Copy
    Range("H3").Select
    ActiveSheet.Pictures.Paste Link:=True
    Application.CutCopyMode = False
End Sub
[/quote]
Супер! Спасибо за этот код, не знал о такой возможности. Два вопроса в связи с этим - 1) как это сделать руками; 2) где найти инфо по объекту Pictures - у меня он не специфирован почему-то (F1 выдает пустой экран). Использую 2003-й Office.

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 30.10.2006 (Пн) 2:21

konev писал(а):1) как это сделать руками;
- выбираешь нужный ранг
- CTRL+C (или меню Правка-Копировать...)
- нажимаешь и удерживаешь SHIFT и идешь в меню Правка-Вставить связь с рисунком...

konev писал(а):2) где найти инфо по объекту Pictures - у меня он не специфирован почему-то (F1 выдает пустой экран). Использую 2003-й Office.
Эта коллекция является рудиментом Excel Basic и используется практически исключительно в коде типа ActiveSheet.Pictures.Insert( "C:\Temp\Blue hills.jpg"). В VBA данная коллекция была заменена на Shapes.
Привет,
KL


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 30

    TopList